Systems and methods of secure self-service access to content

ABSTRACT

In one embodiment, a method is performed by a computer system. The method includes receiving a request from a user to access particular content. The method further includes determining a trust measure of the user, wherein the trust measure is based, at least in part, on an analysis of logged user-initiated communication events of the user on a plurality of communications platforms. In addition, the method includes accessing a self-service access policy applicable to the particular content. Further, the method includes ascertaining, from the self-service access policy, a trust threshold applicable to the particular content. Moreover, the method includes, responsive to a determination that the trust measure fails to satisfy the trust threshold, automatically denying access by the user to the particular content.

CROSS-REFERENCE TO RELATED APPLICATIONS

This patent application incorporates by reference the entire disclosureof U.S. patent application Ser. No. 14/683,453 filed on Apr. 10, 2015.This patent application also incorporates by reference the entiredisclosure of U.S. patent application Ser. No. 14/683,462 filed on Apr.10, 2015.

BACKGROUND Technical Field

The present disclosure relates generally to data security and moreparticularly, but not by way of limitation, to systems and methods ofsecure self-service access to content.

History of Related Art

For corporate information systems, access management is usually a veryrigid process. Typically, an employee must email or call an informationtechnology support center to obtain access to a desired resource.

Moreover, as the value and use of information continues to increase,individuals and businesses seek additional ways to process and storeinformation. One option available to users is information handlingsystems. An information handling system generally processes, compiles,stores, and/or communicates information or data for business, personal,or other purposes thereby allowing users to take advantage of the valueof the information. Because technology and information handling needsand requirements vary between different users or applications,information handling systems may also vary regarding what information ishandled, how the information is handled, how much information isprocessed, stored, or communicated, and how quickly and efficiently theinformation may be processed, stored, or communicated. The variations ininformation handling systems allow for information handling systems tobe general or configured for a specific user or specific use such asfinancial transaction processing, airline reservations, enterprise datastorage, or global communications. In addition, information handlingsystems may include a variety of hardware and software components thatmay be configured to process, store, and communicate information and mayinclude one or more computer systems, data storage systems, andnetworking systems.

SUMMARY OF THE INVENTION

In one embodiment, a method is performed by a computer system. Themethod includes receiving a request from a user to access particularcontent. The method further includes determining a trust measure of theuser, wherein the trust measure is based, at least in part, on ananalysis of logged user-initiated communication events of the user on aplurality of communications platforms. In addition, the method includesaccessing a self-service access policy applicable to the particularcontent. Further, the method includes ascertaining, from theself-service access policy, a trust threshold applicable to theparticular content. Moreover, the method includes, responsive to adetermination that the trust measure fails to satisfy the trustthreshold, automatically denying access by the user to the particularcontent.

In one embodiment, an information handling system includes a processor.The processor is operable to implement a method. The method includesreceiving a request from a user to access particular content. The methodfurther includes determining a trust measure of the user, wherein thetrust measure is based, at least in part, on an analysis of loggeduser-initiated communication events of the user on a plurality ofcommunications platforms. In addition, the method includes accessing aself-service access policy applicable to the particular content.Further, the method includes ascertaining, from the self-service accesspolicy, a trust threshold applicable to the particular content.Moreover, the method includes, responsive to a determination that thetrust measure fails to satisfy the trust threshold, automaticallydenying access by the user to the particular content.

In one embodiment, a computer-program product includes a non-transitorycomputer-usable medium having computer-readable program code embodiedtherein. The computer-readable program code is adapted to be executed toimplement a method. The method includes receiving a request from a userto access particular content. The method further includes determining atrust measure of the user, wherein the trust measure is based, at leastin part, on an analysis of logged user-initiated communication events ofthe user on a plurality of communications platforms. In addition, themethod includes accessing a self-service access policy applicable to theparticular content. Further, the method includes ascertaining, from theself-service access policy, a trust threshold applicable to theparticular content. Moreover, the method includes, responsive to adetermination that the trust measure fails to satisfy the trustthreshold, automatically denying access by the user to the particularcontent.

BRIEF DESCRIPTION OF THE DRAWINGS

A more complete understanding of the method and apparatus of the presentinvention may be obtained by reference to the following DetailedDescription when taken in conjunction with the accompanying Drawingswherein:

FIG. 1 illustrates an embodiment of a networked computing environment.

FIG. 2 illustrates an embodiment of a Business Insight on Messaging(BIM) system.

FIG. 3 presents a flowchart of an example of a data collection process.

FIG. 4 presents a flowchart of an example of a data classificationprocess.

FIG. 5 presents a flowchart of an example of a data query process.

FIG. 6 illustrates an example of a heuristics engine.

FIG. 7 presents a flowchart of an example of a heuristics process.

FIG. 8 presents a flowchart of an example of a data query process.

FIG. 9 illustrates an example of a user interface.

FIG. 10 illustrates an example of a user interface.

FIG. 11 illustrates an embodiment of an implementation of across-platform DLP system.

FIG. 12 illustrates an example of a process for cross-platform DLPimplementation.

FIG. 13 illustrates an example of a process for creating across-platform DLP policy.

FIG. 14 illustrates an example of a process for dynamically acquiringcontext information.

FIG. 15 illustrates an example of a process for publishing violationinformation.

FIG. 16 illustrates an example of an access profile.

FIG. 17 illustrates an embodiment of a system for user-context-basedanalysis of communications.

FIG. 18 presents a flowchart of an example of a process for performinguser-context-based analysis of communication events.

FIG. 19 presents a flowchart of an example of a process for performingdynamic DLP via a real-time user-context-based analysis.

FIG. 20 presents a flowchart of an example of a process for configuringa dynamic DLP policy and/or a user context responsive to user input.

FIG. 21 illustrates an embodiment of an implementation of asubject-matter-affiliation system.

FIG. 22 presents a flowchart of an example of a process for classifyingusers as having a subject-matter affiliation with particular topics.

FIG. 23 presents a flowchart of an example of a process for generatingmultidimensional subject-matter-affiliation data for a given topic anduser.

FIG. 24 illustrates an embodiment of a system for self-service access tocontent.

FIG. 25 illustrates an example format of a self-service access policy.

FIG. 26 presents a flowchart of an example of a process for establishingself-service access policies.

FIG. 27 presents a flowchart of an example of a process for determiningtrust values usable for self-service access.

FIG. 28 presents a flowchart of an example of a process for determiningneed-to-know values usable for self-service access.

FIG. 29 presents a flowchart of an example of a process for processingself-service access requests.

DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS OF THE INVENTION

This disclosure describes several non-limiting examples of processes forcollecting information or data from multiple sources and analyzing theinformation to classify the data and to extract or determine additionalinformation based on the collected data. The data sources can beinternal to the business and/or external to the business. For example,the data sources can include sales databases, business or internal emailsystems, non-business or external email systems, social networkingaccounts, inventory databases, file directories, enterprise systems,customer relationship management (CRM) systems, organizationaldirectories, collaboration systems (e.g., SharePoint™ servers), etc.

As used herein, the term “business,” in addition to having its ordinarymeaning, is intended to include any type of organization or entity. Forexample, a business can include a charitable organization, agovernmental organization, an educational institution, or any otherentity that may have one or more sources of data to analyze. Further,the user of any of the above terms may be used interchangeably unlessexplicitly used otherwise or unless the context makes clear otherwise.In addition, as used herein, the term “data” generally refers toelectronic data or any type of data that can be accessed by a computingsystem.

For purposes of this disclosure, an information handling system mayinclude any instrumentality or aggregate of instrumentalities operableto compute, calculate, determine, classify, process, transmit, receive,retrieve, originate, switch, store, display, communicate, manifest,detect, record, reproduce, handle, or utilize any form of information,intelligence, or data for business, scientific, control, or otherpurposes. For example, an information handling system may be a personalcomputer (e.g., desktop or laptop), tablet computer, mobile device(e.g., personal digital assistant (PDA) or smart phone), server (e.g.,blade server or rack server), a network storage device, or any othersuitable device and may vary in size, shape, performance, functionality,and price. The information handling system may include random accessmemory (RAM), one or more processing resources such as a centralprocessing unit (CPU) or hardware or software control logic, ROM, and/orother types of nonvolatile memory. Additional components of theinformation handling system may include one or more disk drives, one ormore network ports for communicating with external devices as well asvarious input and output (I/O) devices, such as a keyboard, a mouse,touchscreen and/or a video display. The information handling system mayalso include one or more buses operable to transmit communicationsbetween the various hardware components.

I. Example of a Networked Computing Environment

FIG. 1 illustrates an embodiment of a networked computing environment100. The networked computing environment 100 can include a computingenvironment 102 that is associated with a business or organization. Thecomputing environment 102 may vary based on the type of organization orbusiness. However, generally, the computing environment 102 may includeat least a number of computing systems. For example, the computingenvironment may include clients, servers, databases, mobile computingdevices (e.g., tablets, laptops, smartphones, etc.), virtual computingdevices, shared computing devices, networked computing devices, and thelike. Further, the computing environment 102 may include one or morenetworks, such as intranet 104.

The computing environment 102 includes a central management platform192. As illustrated, the central management platform 192 can include aBIM system 130, a cross-platform DLP system 146, a user-contextanalytics system 180, a subject-matter-affiliation (SMA) system 194, anda self-service access broker 196. The central management platform 192can include one or more computer systems; be unitary or distributed;span multiple locations; span multiple machines; or reside in a cloud,which may include one or more cloud components in one or more networks.In certain embodiments, these components of the central managementplatform 192 are operable to interact with the BIM system 130, forexample, over the intranet 104. In certain other embodiments, thesecomponents of the central management platform 192 can be contained on asame computer system or have direct communication links such that nocommunication over the intranet 104 needs to occur. In various cases,communication among the components of the central management platform192 can occur via a combination of the foregoing.

A user can access the central management platform 192 using anycomputing system, such as an information handling system, that cancommunicate with the central management platform 192. For example, theuser can access the central management platform 192 using client 114,which can communicate with the central management platform 192 via theintranet 104, client 116, which can communicate via a directcommunication connection with the central management platform 192, orclient 118, which can communicate with the central management platform192 via the network 106. As illustrated in FIG. 1, in some embodimentsthe client 118 may not be associated with the computing environment 102.In such embodiments, the client 118 and/or a user associated with theclient 118 may be granted access to the central management platform 192.The clients 114, 116, and 118 may include any type of computing systemincluding, for example, a laptop, desktop, smartphone, tablet, wearableor body-borne computer, or the like. In some embodiments, the centralmanagement platform 192 (e.g., the BIM system 130) may determine whetherthe user is authorized to access central management platform 192 asdescribed in further detail below.

Using the BIM system 130, a user can examine the data available to abusiness regardless of where the data was generated or is stored.Further, in some embodiments, the user can use the BIM system 130 toidentify trends and/or metadata associated with the data available tothe BIM system 130. In certain embodiments, the BIM system 130 canaccess the data from internal data sources 120, external data sources122, or a combination of the two. The data that can be accessed from theinternal data sources 120 can include any data that is stored within thecomputing environment 102 or is accessed by a computing system that isassociated with the computing environment 102. For example, the data mayinclude information stored in employee created files, log files,archived files, internal emails, outgoing emails, received emails,received files, data downloaded from an external network or theInternet, not-yet-transmitted emails in a drafts folder, etc. The typeof data is not limited and may depend on the organization or businessassociated with the computing environment 102. For example, the data caninclude sales numbers, contact information, vendor costs, productdesigns, meeting minutes, the identity of file creators, the identity offile owners, the identity of users who have accessed a file or areauthorized to access a file, etc.

The data that can be accessed from the external data sources 122 caninclude any data that is stored outside of the computing environment 102and is publicly accessible or otherwise accessible to the BIM system130. For example, the data can include data from social networkingsites, customer sites, Internet sites, or any other data source that ispublicly accessible or which the BIM system 130 has been granted access.In some cases, a subset of the data may be unavailable to the BIM system130. For example, portions of the computing environment 102 may beconfigured for private use.

The internal data sources 120 can include any type of computing systemthat is part of or associated with the computing environment 102 and isavailable to the BIM system 130. These computing systems can includedatabase systems or repositories, servers (e.g., authentication servers,file servers, email servers, collaboration servers), clients, mobilecomputing systems (including e.g., tablets, laptops, smartphones, etc.),virtual machines, CRM systems, content-management platforms, directoryservices, such as lightweight directory access protocol (LDAP) systems,and the like. Further, in some cases, the internal data sources 120 caninclude the clients 114 and 116. The external data sources 122 caninclude any type of computing system that is not associated with thecomputing environment 102, but is accessible to the BIM system 130. Forexample, the external data sources 122 can include any computing systemsassociated with cloud services, social media services, hostedapplications, etc.

The BIM system 130 can communicate with the internal data sources 120via the intranet 104. The intranet 104 can include any type of wiredand/or wireless network that enables computing systems associated withthe computing environment 102 to communicate with each other. Forexample, the intranet 104 can include any type of a LAN, a WAN, anEthernet network, a wireless network, a cellular network, a virtualprivate network (VPN) and an ad hoc network. In some embodiments, theintranet 104 may include an extranet that is accessible by customers orother users who are external to the business or organization associatedwith the computing environment 102.

The BIM system 130 can communicate with the external data sources 122via the network 106. The network 106 can include any type of wired,wireless, or cellular network that enables one or more computing systemsassociated with the computing environment 102 to communicate with theexternal data sources 122 and/or any computing system that is notassociated with the computing environment 102. In some cases, thenetwork 106 can include the Internet.

The BIM system 130 can include a data collection system 132, a dataclassification system 134, and a BIM access system 136. The datacollection system 132 can collect data or information from one or moredata sources for processing by the BIM system 130. In some embodiments,the data collection system 132 can reformat the collected data tofacilitate processing by the BIM system 130. Further, in some cases, thedata collection system 132 may reformat collected data into a consistentor defined format that enables the comparison or processing of data thatis of the same or a similar type, but which may be formatted differentlybecause, for example, the data is obtained from different sources. Thedata collection system 132 is described in more detail below withreference to FIG. 2.

The data classification system 134 can store and classify the dataobtained by the data collection system 132. In addition to predefinedclassifications, the data classification system 134 can identify anddevelop new classifications and associations between data using, forexample, heuristics and probabilistic algorithms. The dataclassification system 134 is described in more detail below withreference to FIG. 3.

The BIM access system 136 can provide users with access to the BIMsystem 130. In some embodiments, the BIM access system 136 determineswhether a user is authorized to access the BIM system 130. The BIMaccess system 136 enables a user to query one or more databases (notshown) of the data classification system 134 to obtain access to thedata collected by the data collection system 132. Further, the BIMaccess system 136 enables a user to mine the data and/or to extractmetadata by, for example, creating queries based on the data and thedata classifications. Advantageously, in certain embodiments, becausethe data classification system 134 can classify data obtained from anumber of data sources, more complex queries can be created compared toa system that can only query its own database or a single data source.

Additionally, in certain embodiments, the BIM access system 136 canenable users to create, share, and access query packages. As describedin greater detail below, a query package can encapsulate one or morepre-defined queries, one or more visualizations of queried data, andother package attributes. When a user selects a query package, the querypackage can be executed in a determined manner in similar fashion toother queries. As an additional advantage, in some embodiments, becausethe data classification system 134 can use heuristics and probabilisticalgorithms to develop and modify data classifications over time, userqueries are not limited to a set of predefined search variables. The BIMaccess system 136 is described in more detail below with reference toFIG. 3.

As mentioned above, the internal data sources 120 and the external datasources 122 can include various communications platforms that areinternal and external, respectively. The cross-platform DLP system 146can enable utilization of cross-platform DLP policies on suchcommunications platforms. For purposes of this patent application, a DLPpolicy refers to a standard or guideline designed, at least in part, toprevent, detect, or mitigate data loss. By way of example, DLP policiescan restrict a number or size of communications, participants incommunications, contents of communications, particular communicationpatterns, etc. For purposes of this patent application, a cross platformDLP policy refers to a DLP policy that can be enforced, monitored,and/or applied across multiple heterogeneous communications platforms.In many cases, the heterogeneous communications platforms may provide acertain degree of native DLP functionality. In other cases, some or allof the heterogeneous platforms may provide no native DLP functionality.To the extent native DLP functionality is provided, the heterogeneouscommunications platforms generally use an assortment of non-standarddata structures and formats to contain a DLP policy.

The cross-platform DLP system 146 can communicate with the internal datasources 120 over the intranet 104 and with the external data sources 122over the network 106. In general, the cross-platform DLP system 146collaborates with the BIM system 130, the internal data sources 120, andthe external data sources 122 to implement cross-platform DLP policies.Example operation of the cross-platform DLP system 146 will be describedin greater detail with respect to FIGS. 11-16.

The user-context analytics system 180 can be used to generateintelligence regarding how user behavior on a remote computer system(e.g., communications platforms represented in the internal data sources120) differs based, at least in part, on user context. In general, auser context is representative of one or more conditions under which oneor more user-initiated events occur. A user-initiated event can be, forexample, a user-initiated communication event on a communicationsplatform. Examples of user-initiated communication events include a usercreating, drafting, receiving, viewing, opening, editing, transmitting,or otherwise accessing or acting upon a communication. Communicationscan include, for example, emails, blogs, wikis, documents,presentations, social-media messages, and/or the like. User-initiatedevents can also include other user behaviors such as, for example, auser accessing or manipulating non-communication computer resources andartifacts thereof. User-initiated events can be initiated via, forexample, the client 114, the client 116, the client 116, and/or thelike. Example operation of the user-context analytics system 180 will bedescribed in greater detail with respect to FIGS. 17-20.

In certain embodiments, the SMA system 194 can facilitate individualdeterminations of users' affiliation with particular topics based on ananalysis of the contents of the users' communications on communicationsplatforms represented by the internal data sources 120 and the externaldata sources 122. Communications can include, for example, emails,blogs, wikis, documents, presentations, social-media messages, and/orthe like. In some embodiments, the SMA system 194 can encompassfunctionality for identifying subject matter experts as described inU.S. patent application Ser. No. 14/047,162 (“the '162 application”),which application is hereby incorporated by reference. Example operationof the SMA system 194 will be described in greater detail with respectto FIGS. 21-23.

The self-service access broker 196 can enable user requests forparticular content to be granted or denied automatically based onself-service access policies. In certain embodiments, the self-serviceaccess broker 196 can allow self-service access policies to beestablished for particular content. The self-service access policies canspecify, for example, criteria for determining whether users aretrustworthy, whether users need to know the particular content, etc.Example operation of the self-service access broker 196 will bedescribed in greater detail with respect to FIGS. 24-29.

II. Examples of Collecting, Classifying, and Querying Data

FIG. 2 illustrates an embodiment of an implementation of the BIM system130. As previously described above, the BIM system 130 can include adata collection system 132 configured to, among other things, collectdata from the internal data sources 120 and/or the external data sources122. The data collection system 132 can include a collection engine 202,an access manager 204, a business logic engine 206, and a business logicsecurity manager 208.

Generally, the collection engine 202 may access the internal datasources 120 thereby providing the BIM system 130 with access to datathat is stored by or generated by the internal data sources 120. Thisdata can include any data that may be created, accessed, or received bya user or in response to the actions of a user who is associated withthe computing environment 102. Further, in some embodiments, thecollection engine 202 can access the external data sources 122 therebyproviding the BIM system 130 with access to data from the external datasources 122. In some embodiments, the data can include metadata. Forexample, supposing that the collection engine 202 accesses a fileserver, the data can include metadata associated with the files storedon the file server, such as the file name, file author, file owner, timecreated, last time edited, etc.

In some cases, a number of internal data sources 120 and/or externaldata sources 122 may require a user or system to be identified and/orauthenticated before access to the data source is granted.Authentication may be required for a number of reasons. For example, thedata source may provide individual accounts to users, such as a socialnetworking account, email account, or collaboration system account. Asanother example, the data source may provide different features based onthe authorization level of a user. For example, a billing system may beconfigured to allow all employees of an organization to view invoices,but to only allow employees of the accounting department to modifyinvoices.

For data sources that require authentication or identification of aspecific user, the access manager 204 can facilitate access to the datasources. The access manager 204 can manage and control credentials foraccessing the data sources. For example, the access manager 204 canstore and manage user names, passwords, account identifiers,certificates, tokens, and any other information that can be used toaccess accounts associated with one or more internal data sources 120and/or external data sources 122. For instance, the access manager 204may have access to credentials associated with a business's Facebook™ orTwitter™ account. As another example, the access manager may have accessto credentials associated with an LDAP directory, a file managementsystem, or employee work email accounts.

In some embodiments, the access manager 204 may have credentials orauthentication information associated with a master or super useraccount enabling access to some or all of the user accounts withoutrequiring credentials or authentication information associated with eachof the users. In some cases, the collection engine 202 can use theaccess manager 204 to facilitate accessing internal data sources 120and/or external data sources 122.

The business logic engine 206 can include any system that can modify ortransform the data collected by the collection engine 202 into astandardized format. In some embodiments, the standardized format maydiffer based on the data source accessed and/or the type of dataaccessed. For example, the business logic engine 206 may format dataassociated with emails, data associated with files stored at thecomputing environment 102, data associated with web pages, and dataassociated with research files differently. However, each type of datamay be formatted consistently. Thus, for example, data associated withproduct design files may be transformed or abstracted into a commonformat regardless of whether the product design files are of the sametype. As a second example, suppose that the business logic engine 206 isconfigured to record time using a 24-hour clock format. In this secondexample, if one email application records the time an email was sentusing a 24-hour clock format, and a second email application uses a12-hour clock format, the business logic engine 206 may reformat thedata from the second email application to use a 24-hour clock format

In some embodiments, a user may define the format for processing andstoring different types of data. In other embodiments, the businesslogic engine 206 may identify a standard format to use for each type ofdata based on, for example, the format that is most common among similartypes of data sources, the format that reduces the size of theinformation, or any other basis that can be used to decide a dataformat.

The business logic security manager 208 can include any system that canimplement security and data access policies for data accessed by thecollection engine 202. In some embodiments, the business logic securitymanager 208 may apply the security and data access policies to databefore the data is collected as part of a determination of whether tocollect particular data. For example, an organization may designate aprivate folder or directory for each employee and the data accesspolicies may include a policy to not access any files or data stored inthe private directory. Alternatively, or in addition, the business logicsecurity manager 208 may apply the security and data access policies todata after it is collected by the collection engine 202. Further, insome cases, the business logic security manager 208 may apply thesecurity and data access policies to the abstracted and/or reformatteddata produced by the business logic engine 206. For example, suppose theorganization associated with the computing environment 102 has adopted apolicy of not collecting emails designated as personal. In this example,the business logic security manager 208 may examine email to determinewhether it is addressed to an email address designated as personal(e.g., email addressed to family members) and if the email is identifiedas personal, the email may be discarded by the data collection system132 or not processed any further by the BIM system 130.

In some embodiments, the business logic security manager 208 may apply aset of security and data access policies to any data or metadataprovided to the classification system 134 for processing and storage.These security and data access policies can include any policy forregulating the storage and access of data obtained or generated by thedata collection system 132. For example, the security and data accesspolicies may identify the users who can access the data provided to thedata classification system 134. The determination of which users canaccess the data may be based on the type of data. The business logicsecurity manager 208 may tag the data with an identity of the users, orclass or role of users (e.g., mid-level managers and more senior) whocan access the data. As another example, of a security and data accesspolicy, the business logic security manager 208 may determine how longthe data can be stored by the data classification system 134 based on,for example, the type of data or the source of the data.

After the data collection system 132 has collected and, in some cases,processed the data obtained from the internal data sources 120 and/orthe external data sources 122, the data may be provided to the dataclassification system 134 for further processing and storage. The dataclassification system 134 can include a data repository engine 222, atask scheduler 224, an a priori classification engine 226, an aposteriori classification engine 228, a heuristics engine 230 and a setof databases 232.

The data repository engine 222 can include any system for storing andindexing the data received from the data collection system 132. The datarepository engine 222 can store the data, including any generatedindexes, at the set of databases 232, which can include one or moredatabases or repositories for storing data. In some cases, the set ofdatabases 232 can store data in separate databases based on any factorincluding, for example, the type of data, the source of data, or thesecurity level or authorization class associated with the data and theclass of users who can access the data.

In some implementations, the set of databases 232 can dynamically expandand, in some cases, the set of databases 232 may be dynamicallystructured. For example, if the data repository engine 222 receives anew type of data that includes metadata fields not supported by theexisting databases of the set of databases 232, the data repositoryengine 222 can create and initialize a new database that includes themetadata fields as part of the set of databases 232. For instance,suppose the organization associated with the computing environment 102creates its first social media account for the organization to expandits marketing initiatives. Although the databases 232 may have fieldsfor customer information and vendor information, it may not have a fieldidentifying whether a customer or vendor has indicated they “like” or“follow” the organization on its social media page. The data repositoryengine 222 can create a new field in the databases 232 to store thisinformation and/or create a new database to capture informationextracted from the social media account including information thatrelates to the organization's customers and vendors.

In certain embodiments, the data repository engine 222 can createabstractions of and/or classify the data received from the datacollection system 132 using, for example, the task scheduler 224, the apriori classification engine 226, the a posteriori classification engine228, and the heuristics engine 230. The task scheduler 224 can includeany system that can manage the abstraction and classification of thedata received from the data collection system 132. In some embodiments,the task scheduler 224 can be included as part of the data repositoryengine 222.

Data that is to be classified and/or abstracted can be supplied to thetask scheduler 224. The task scheduler 224 can supply the data to the apriori classification engine 226, which can include any system that canclassify data based on a set of user-defined, predefined, orpredetermined classifications. These classifications may be provided bya user (e.g., an administrator) or may be provided by the developer ofthe BIM system 130. Although not limited as such, the predeterminedclassifications generally include objective classifications that can bedetermined based on attributes associated with the data. For example,the a priori classification engine 226 can classify communications basedon whether the communication is an email, an instant message, or a voicemail. As a second example, files may be classified based on the filetype, such as whether the file is a drawing file (e.g., an AutoCAD™file), a presentation file (e.g., a PowerPoint™ file), a spreadsheet(e.g., an Excel™ file), a word processing file (e.g., a Word™ file),etc. Although not limited as such, the a priori classification engine226 generally classifies data at or substantially near the time ofcollection by the collection engine 202. The a priori classificationengine 226 can classify the data prior to the data being stored in thedatabases 232. However, in some cases, the data may be stored prior toor simultaneously with the a priori classification engine 226classifying the data. The data may be classified based on one or morecharacteristics or pieces of metadata associated with the data. Forexample, an email may be classified based on the email address, a domainor provider associated with the email (e.g., a Yahoo® email address or acorporate email address), or the recipient of the email.

In addition to, or instead of, using the a priori classification engine226, the task scheduler 224 can provide the data to the a posterioriclassification engine 228 for classification or further classification.The a posteriori classification engine 228 can include any system thatcan determine trends with respect to the collected data. Although notlimited as such, the a posteriori classification engine 228 generallyclassifies data after the data has been collected and stored at thedatabases 232. However, in some cases, the a posteriori classificationengine 228 can also be used to classify data as it is collected by thecollection engine 202. Data may be processed and classified orreclassified multiple times by the a posteriori classification engine228. In some cases, the classification and reclassification of the dataoccurs on a continuing basis. In other cases, the classification andreclassification of data occurs during specific time periods of events.For example, data may be reclassified each day at midnight or once aweek. As another example, data may be reclassified each time one or moreof the a posteriori algorithms is modified or after the collection ofnew data.

In some cases, the a posteriori classification engine 228 classifiesdata based on one or more probabilistic algorithms. The probabilisticalgorithms may be based on any type of statistical analysis of thecollected data. For example, the probabilistic algorithms may be basedon Bayesian analysis or probabilities. Further, Bayesian inferences maybe used to update the probability estimates calculated by the aposteriori classification engine 228. In some implementations, the aposteriori classification engine 228 may use machine learning techniquesto optimize or update the a posteriori algorithms. In some embodiments,some of the a posteriori algorithms may determine the probability that apiece or set of data (e.g., an email) should have a particularclassification based on an analysis of the data as a whole.Alternatively, or in addition, some of the a posteriori algorithms maydetermine the probability that a set of data should have a particularclassification based on the combination of probabilistic determinationsassociated with subsets of the data, parameters, or metadata associatedwith the data (e.g., classifications associated with the content of theemail, the recipient of the email, the sender of the email, etc.).

For example, continuing with the email example, one probabilisticalgorithm may be based on the combination of the classification ordetermination of four characteristics associated with the email, whichmay be used to determine whether to classify the email as a personalemail, or non-work related. The first characteristic can include theprobability that an email address associated with a participant (e.g.,sender, recipient, BCC recipient, etc.) of the email conversation isused by a single employee. This determination may be based on the emailaddress itself (e.g., topic based versus name based email address), thecreator of the email address, or any other factor that can be used todetermine whether an email address is shared or associated with aparticular individual. The second characteristic can include theprobability that keywords within the email are not associated withpeer-to-peer or work-related communications. For example, terms ofendearment and discussion of children and children's activities are lesslikely to be included in work-related communications. The thirdcharacteristic can include the probability that the email address isassociated with a participant domain or public service provider (e.g.,Yahoo® email or Google® email) as opposed to a corporate or work emailaccount. The fourth characteristic can include determining theprobability that the message or email thread can be classified asconversational as opposed to, for example, formal. For example, a seriesof quick questions in a thread of emails, the use of a number of slangwords, or excessive typographical errors may indicate that an email islikely conversational. The a posteriori classification engine 228 canuse the determined probabilities for the above four characteristics todetermine the probability that the email communication is personal asopposed to, for example, work-related, or spam email.

The combination of probabilities may not total 100%. Further, thecombination may itself be a probability and the classification can bebased on a threshold determination. For example, the threshold may beset such that an email is classified as personal if there is a 90%probability for three of the four above parameters indicating the emailis personal (e.g., email address is used by a single employee, thekeywords are not typical of peer-to-peer communication, at least some ofthe participant domains are from known public service providers, and themessage thread is conversational).

As another example of the a posteriori classification engine 228classifying data, the a posteriori classification engine 228 can use aprobabilistic algorithm to determine whether a participant of an emailis a customer. The a posteriori classification engine 228 can use theparticipant's identity (e.g., a customer) to facilitate classifying datathat is associated with the participant (e.g., emails, files, etc.). Todetermine whether the participant should be classified as a customer,the a posteriori classification engine 228 can examiner a number ofparameters including a relevant Active Directory Organizational Unit(e.g., sales, support, finance) associated with the participant and/orother participants in communication with the participant, theparticipant's presence in forum discussions, etc. In some cases,characteristics used to classify data may be weighted differently aspart of the probabilistic algorithm. For example, email domain may be apoor characteristic to classify a participant in some cases because theemail domain may be associated with multiple roles. For instance,Microsoft® may be a partner, a customer, and a competitor.

In some implementations, a user (e.g., an administrator) can define theprobabilistic algorithms used by the a posteriori classification engine228. For example, suppose customer Y is a customer of business X andthat the management of business X is interested in tracking thepercentage of communication between business X and customer Y thatrelates to sales. Further, suppose that a number of employees frombusiness X and a number of employees from business Y are incommunication via email. Some of these employees may be in communicationto discuss sales. However, it is also possible that some of theemployees may be in communication for technical support issues,invoicing, or for personal reasons (e.g., a spouse of a business Xemployee may work at customer Y). Thus, in this example, to track thepercentage of communication between business X and customer Y thatrelates to sales the user may define a probabilistic algorithm thatclassifies communications based on the probability that thecommunication relates to sales. The algorithm for determining theprobability may be based on a number of pieces of metadata associatedwith each communication. For example, the metadata may include thesender's job title, the recipient's job title, the name of the sender,the name of the recipient, whether the communication identifies aproduct number or an order number, the time of communication, a set ofkeywords in the content of the communication, etc.

Using the a posteriori classification engine 228, data may be classifiedbased on metadata associated with the data. For example, thecommunication in the above example can be classified based on whether itrelates to sales, supplies, project development, management, personnel,or is personal. The determination of what the data relates to can bebased on any criteria. For example, the determination may be based onkeywords associated with the data, the data owner, the data author, theidentity or roles of users who have accessed the data, the type of datafile, the size of the file, the data the file was created, etc.

In certain embodiments, the a posteriori classification engine 228 canuse the heuristics engine 230 to facilitate classifying data. Further,in some cases, the a posteriori classification engine 228 can use theheuristics engine 230 to validate classifications, to develop probableassociations between potentially related content, and to validate theassociations as the data collection system 132 collects more data. Incertain embodiments, the a posteriori classification engine 228 may basethe classifications of data on the associations between potentiallyrelated content. In some implementations, the heuristic engine 230 mayuse machine learning techniques to optimize or update the heuristicalgorithms.

In some embodiments, a user (e.g., an administrator) can verify whetherthe data or metadata has been correctly classified. Based on the resultof this verification, in some cases, the a posteriori classificationengine 228 may correct or update one or more classifications ofpreviously processed or classified data. Further, in someimplementations, the user can verify whether two or more pieces of dataor metadata have been correctly associated with each other. Based on theresult of this verification, the a posteriori classification engine 228using, for example, the heuristics engine 230 can correct one or moreassociations between previously processed data or metadata. Further, incertain embodiments, one or more of the a posteriori classificationengine 228 and the heuristics engine 230 may update one or morealgorithms used for processing the data provided by the data collectionsystem 132 based on the verifications provided by the user.

In some embodiments, the heuristics engine 230 may be used as a separateclassification engine from the a priori classification engine 226 andthe a posteriori classification engine 228. Alternatively, theheuristics engine 230 may be used in concert with one or more of the apriori classification engine 226 and the a posteriori classificationengine 228. Similar to the a posteriori classification engine 228, theheuristics engine 230 generally classifies data after the data has beencollected and stored at the databases 232. However, in some cases, theheuristics engine 230 can also be used to classify data as it iscollected by the collection engine 202.

The heuristics engine 230 can use any type of heuristic algorithm forclassifying data. For example, the heuristics engine 230 can determinewhether a number of characteristics are associated with the data andbased on the determination, classify the data. For example, data thatmentions a product, includes price information, addresses (e.g., billingand shipping addresses), and quantity information may be classified assales data. In some cases, the heuristics engine 230 can classify databased on a subset of characteristics. For example, if a majority ortwo-thirds of characteristics associated with a particularclassification are identified as existing in a set of data, theheuristics engine 230 can associate the classification with the set ofdata. In some cases, the heuristics engine 230 determines whether one ormore characteristics are associated with the data. In other words, theheuristics engine can determine whether a particular characteristic isor is not associated with the data. Alternatively, or in addition, theheuristics engine 230 can determine the value or attribute of aparticular characteristic associated with the data. The value orattribute of the characteristic may then be used to determine aclassification for the data. For example, one characteristic that may beused to classify data is the length of the data. For instance, in somecases, a long email may make one classification more likely that a shortemail.

The a priori classification engine 226 and the a posterioriclassification engine 228 can store the data classification at thedatabases 232. Further, the a posteriori classification engine 228 andthe heuristics engine 230 can store the probable associations betweenpotentially related data at the databases 232. In some cases, asclassifications and associations are updated based on, for example, userverifications or updates to the a posteriori and heuristicclassification and association algorithms, the data or metadata storedat the databases 232 can be modified to reflect the updates.

Users can communicate with the BIM system 130 using a client computingsystem (e.g., client 114, client 116, or client 118). In some cases,access to the BIM system 130, or to some features of the BIM system 130,may be restricted to users who are using clients associated with thecomputing environment 102. As described above, in some cases, at leastsome users can access the BIM system 130 to verify classifications andassociations of data by the data classification system 134. In addition,in some cases, at least some users can access at least some of the dataand/or metadata stored at the data classification system 134 using theBIM access system 136. The BIM access system 136 can include a userinterface 240, a query manager 242, and a query security manager 244.

The user interface 240 can generally include any system that enables auser to communicate with the BIM system 130. Further, the user interface240 enables the user to submit a query to the BIM system 130 to accessthe data or metadata stored at the databases 232. Moreover, the querycan be based on any number of or type of data or metadata fields orvariables. Advantageously, in certain embodiments, by enabling, a userto create a query based on any number or type of fields, complex queriescan be generated. Further, because the BIM system 130 can collect andanalyze data from a number of internal and external data sources, a userof the BIM system 130 can extract data that is not typically availableby accessing a single data source. For example, a user can query the BIMsystem 130 to locate all personal messages sent by the members of theuser's department within the last month. As a second example, a user canquery the BIM system 130 to locate all helpdesk requests received in aspecific month outside of business hours that were sent by customersfrom Europe. As an additional example, a product manager may create aquery to examine customer reactions to a new product release or thepitfalls associated with a new marketing campaign. The query may returndata that is based on a number of sources including, for example, emailsreceived from customers or users, Facebook® posts, Twitter® feeds, forumposts, quantity of returned products, etc.

Further, in some cases, a user can create a relatively simple query toobtain a larger picture of an organization's knowledge compared tosystems that are incapable of integrating the potentially large numberof information sources used by some businesses or organizations. Forexample, a user can query the BIM system 130 for information associatedwith customer X over a time range. In response, the BIM system 130 mayprovide the user with all information associated with customer X overthe time range, which can include who communicated with customer X, thepercentage of communications relating to specific topics (e.g., sales,support, etc.), the products designed for customer X, the employees whoperformed any work relating to customer X and the employees' roles, etc.This information may not be captured by a single source. For example,the communications may be obtained from an email server, the productsmay be identified from product drawings, and the employees and theirroles may be identified by examining who accessed specific files incombination with the employees' human resources (HR) records.

The query manager 242 can include any system that enables the user tocreate the query. The query manager 242 can cause the available types ofsearch parameters for searching the databases 232 to be presented to auser via the user interface 240. These search parameter types caninclude any type of search parameter that can be used to form a queryfor searching the databases 232. For example, the search parameter typescan include names (e.g., employee names, customer names, vendor names,etc.), data categories (e.g., sales, invoices, communications, designs,miscellaneous, etc.), stored data types (e.g., strings, integers, dates,times, etc.), data sources (e.g., internal data sources, external datasources, communication sources, sales department sources, product designsources, etc.), dates, etc. In some cases, the query manager 242 canalso parse a query provided by a user. For example, some queries may beprovided using a text-based interface or using a text-field in aGraphical User Interface (GUI). In such cases, the query manager 242 maybe configured to parse the query.

The query manager 242 can further include any system that enables theuser to create or select a query package that serves as the query. Incertain embodiments, the query manager 242 can maintain query packagesfor each user, group of users, and/or the like. The query packages canbe stored, for example, in a SQL database that maintains each user'squery packages in a table by a unique identifier. In some embodiments,each user may have a profile that includes a list of package identifiersfor that user. The query manager 242 can cause query packages associatedwith the user to be presented and made selectable via the user interface240. In various embodiments, the query manager 242 can also facilitatecreation of new query packages. New query packages can be madeaccessible to users in various ways. For example, the new query packagescan be created by the user, shared with the user by another user, pushedto the user by an administrator, or created in another fashion.

Further, the query manager 242 can cause any type of additional optionsfor querying the databases 232 to be presented to the user via the userinterface 240. These additional options can include, for example,options relating to how query results are displayed or stored.

In some cases, access to the data stored in the BIM system 130 may belimited to specific users or specific roles. For example, access to thedata may be limited to “Bob” or to senior managers. Further, some datamay be accessible by some users, but not others. For example, salesmanagers may be limited to accessing information relating to sales,invoicing, and marketing, technical managers may be limited to accessinginformation relating to product development, design and manufacture, andexecutive officers may have access to both types of data, and possiblymore. In certain embodiments, the query manager 242 can limit the searchparameter options that are presented to a user for forming a query basedon the user's identity and/or role.

The query security manager 244 can include any system for regulating whocan access the data or subsets of data. The query security manager 244can regulate access to the databases 232 and/or a subset of theinformation stored at the databases 232 based on any number and/or typesof factors. For example, these factors can include a user's identity, auser's role, a source of the data, a time associated with the data(e.g., the time the data was created, a time the data was last accessed,an expiration time, etc.), whether the data is historical or current,etc.

Further, the query security manager 244 can regulate access to thedatabases 232 and/or a subset of the information stored at the databases232 based on security restrictions or data access policies implementedby the business logic security manager 208. For example, the businesslogic security manager 208 may identify all data that is “sensitive”based on a set of rules, such as whether the data mentions one or morekeywords relating to an unannounced product in development. Continuingthis example, the business logic security manager 208 may label thesensitive data as, for example, sensitive, and may identify which usersor roles, which are associated with a set of users, can access datalabeled as sensitive. The query security manager 244 can then regulateaccess to the data labeled as sensitive based on the user or the roleassociated with the user who is accessing the databases 232.

Although illustrated separately, in some embodiments, the query securitymanager 244 can be included as part of the query manager 242. Further,in some cases, one or both of the query security manager 244 and thequery manager 242 can be included as part of the user interface 240. Incertain embodiments, some or all of the previously described systems canbe combined or further divided into additional systems. Further, some orall of the previously described systems may be implemented in hardware,software, or a combination of hardware and software.

FIG. 3 presents a flowchart of an example of a data collection process300. The process 300 can be implemented by any system that can accessone or more data sources to collect data for storage and analysis. Forexample, the process 300, in whole or in part, can be implemented by oneor more of the data collection system 132, the collection engine 202,the access manager 204, the business logic engine 206, and the businesslogic security manager 208. In some cases, the process 300 can beperformed generally by the BIM system 130. Although any number ofsystems, in whole or in part, can implement the process 300, to simplifydiscussion, the process 300 will be described in relation to specificsystems or subsystems of the BIM system 130.

The process 300 begins at block 302 where, for example, the collectionengine 202 accesses data from the internal data sources 120. At block304, the collection engine 202 accesses data from the external datasources 122. In some cases, either the block 302 or 304 may be optional.Accessing the data may include obtaining the data or a copy of the datafrom the internal data sources 120. Further, accessing the data mayinclude accessing metadata associated with the data. In someembodiments, the collection engine 202 may obtain copies of the metadataor access the data to obtain or determine metadata associated with thedata without obtaining a copy of the data. For example, in some cases,the collection engine 202 may access email from an email server toobtain metadata (e.g., sender, recipient, time sent, whether files areattached, etc.) associated with email messages with or, in some cases,without obtaining a copy of the email.

As previously described, accessing one or more of the internal datasources 120 and the external data sources 122 may involve using one ormore credentials or accessing one or more accounts associated with thedata sources. In such embodiments, the collection engine 202 may use theaccess manager 204 to access the credentials and/or to facilitateaccessing the data sources.

Generally, although not necessarily, the data obtained at blocks 302 and304 is raw data that is obtained in the format that the data is storedat the data sources with little to no modification. At block 306, thebusiness logic engine 206, as described above, can reformat or transformthe accessed or collected data for analysis and/or storage. Reformattingthe accessed or collected data can include formatting the data to enablefurther processing by the BIM system 130. Further, reformatting theaccessed or collected data can include formatting the data in a formatspecified by a user (e.g., an administrator). In addition, in certaincases, reformatting the data can include extracting metadata from theaccessed or collected data. In some cases, block 306 can includeabstracting the data to facilitate analysis. For example, assuming thedata under analysis is an email, a number of users may be identified.For instance, an email may include a sender, one or more recipients,which may also include users that are carbon copied, or listed on the CCline, and Blind Carbon Copied, or listed on the BCC line, and, in somecases, non-user recipients, such as lists or email addresses that resultin a copy of the email being placed in an electronic folder for storage.Each of these users can be abstracted as “communication participant.”The data can then be analyzed and/or stored with each user identified,for example, as a “communication participant.” As another example ofabstracting the data, the text content of each type of message can beabstracted as “message body.” Thus, an email, a Twitter® post, and aFacebook® post, and a forum post, and a product review can all beabstracted as “message body.” By abstracting data, the BIM system 130enables more in-depth searching across multiple data sources. Forexample, a user can search for all messages associated withcommunication participant X. The result of the search can include anytype of message that is associated with user X including emails sent byuser X, emails received by user X, product review by user X, Twitter®posts by user X, etc. In some embodiments, the databases 232 may storethe abstracted or transformed data and the original data or referencesto the original sources of data. In other embodiments, the databases 232may store the abstracted or transformed data in place of the originaldata.

In some cases, reformatting the data may be optional. For example, incases where the collection engine 202 collects metadata from sourcesthat share a common or substantially similar data storage format, theblock 306 may be unnecessary.

At block 308, the business logic security manager 208 applies a securityor data access policy to the collected data. Applying the securitypolicy can include preventing the collection engine 202 from accessingsome data. For example, applying the security policy can includepreventing the collection engine 202 from accessing encrypted files,files associated with a specific project or user, or files markedprivate. Further, applying the security policy can include marking oridentifying data, based on the security policy, that should not bestored at the databases 232, that should be accessible by a set of usersor roles, or that should be inaccessible by a set of users or roles. Thebusiness logic security manager 208 can filter any data marked forexclusion from storage in the databases 232 at block 310. Further, thebusiness logic security manager 208 and/or the business logic engine 206can filter out any data to be excluded based on a data access policy,which can be based on any type of factor for excluding data. Forexample, data may be filtered based on the age of the data, such asfiles created more than five years ago or emails more than two yearsold.

At block 312, the business logic engine 206 or the business logicsecurity manager 208 may classify the collected and/or filtered data.The data may be classified based on, for example, who can access thedata, the type of data, the source of the data, or any other factor thatcan be used to classify data. In some embodiments, the data may beprovided to the data classification system 134 for classification. Somenon-limiting embodiments of a process for classifying the data aredescribed in further detail below with respect to the process 400, whichis illustrated in FIG. 4.

The business logic engine 206 further formats the data for storage atblock 314. Formatting the data for storage can include creating alow-level abstraction of the data, transforming the data, or extractingmetadata for storage in place of the data. In some cases, block 314 caninclude some or all of the embodiments described above with respect tothe block 306. In some embodiments, data may go through one abstractionor transformation process at the block 306 to optimize the data foranalysis and go through another abstraction or transformation process atthe block 314 to optimize the data for storage and/or query access. Insome embodiments, the metadata may be stored in addition to the data.Further, the metadata, in some cases, may be used for querying thedatabases 232. For example, a user can search the databases 232 forinformation based on one or more metadata fields. In some embodiments,one or more of the blocks 306 and 314 may be optional.

At block 316, the data collection system 132 can cause the data to bestored at, for example, the databases 232. This stored data can includeone or more of the collected data, the metadata, and the abstracteddata. In some embodiments, storing the data can include providing thedata to the data repository engine 222 for indexing. In suchembodiments, the data repository engine 222 can store the indexed dataat the databases 232.

Although the process 300 was presented above in a specific order, it ispossible for the operations of the process 300 to be performed in adifferent order or in parallel. For example, the business logic securitymanager 208 may perform the block 308, at least in part, prior to or inparallel with the blocks 302 and 304. As a second example, the businesslogic engine 206 may perform the block 306 as each item of data isaccessed or after a set of data is accessed at the blocks 302 and 304.

FIG. 4 presents a flowchart of an example of a data classificationprocess 400. The process 400 can be implemented by any system that canclassify data and/or metadata. For example, the process 400, in whole orin part, can be implemented by one or more of the data classificationsystem 134, the data repository engine 222, the task scheduler 224, thea priori classification engine 226, the a posteriori classificationengine 228, and the heuristics engine 230. In some cases, the process400 can be performed generally by the BIM system 130. Although anynumber of systems, in whole or in part, can implement the process 400,to simplify discussion, the process 400 will be described in relation tospecific systems or subsystems of the BIM system 130.

The process 400 begins at block 402 where, for example, the datacollection system 132 accesses data from one or more of the internaldata sources 120 and the external data sources 122. The data collectionsystem 132 may use the collection engine 202 to access the data.Further, the block 402 can include some or all of the embodimentsdescribed above with respect to the blocks 302 and 304. Moreover, someor all of the process 300 described above can be performed as part ofthe process performed at block 402. In some embodiments, the process 400can be performed as part of the block 312 above. In such embodiments,the block 402 may include the data collection system 132 providing thedata, a reformatted version of the data, an abstraction of the data,and/or metadata to the data classification system 134. In someimplementations, the process 400 may be performed separately orindependently of the data collection process. In such embodiments, theblock 402 may include accessing the data from the databases 232. In somecases, the databases 232 may include a database for classified data anda separate database for data that has not yet been classified.

At block 404, the a priori classification engine 226 classifies the databased on a set of user-specified classification rules. As previouslymentioned, a developer of the BIM system 130 or a user (e.g., anadministrator) may specify the classification rules. Further, theclassification rules can include any rules for classifying data based onthe data or metadata associated with the data. For example, data may beclassified based on the author of the data, the owner of the data, thetime the data was created, etc.

At block 406, the a posteriori classification engine 228 classifies thedata using a posteriori analysis. This may include the a posterioriclassification engine 228 using one or more probabilistic algorithms todetermine one or more classifications for the data. The a posterioriclassification engine 228 can use any type of probabilistic algorithmfor classifying the data. For example, the classification may be basedon one or more Bayesian probability algorithms. As another example, thea posteriori classification may be based on clustering of similar ordissimilar pieces of data. One example of such an approach that can beadapted for use herein is the Braun-Blanquet method that is sometimesused in vegetation science. One or both of the a priori classificationand the a posteriori classification may be based on one or morevariables or criteria associated with the data or metadata.

In some embodiments, the a posteriori classification engine 228 may usethe heuristics engine 230 to facilitate calculating the probabilisticclassifications of the data. For example, the a posterioriclassification engine 228 can modify the probabilities used to classifythe data based on a determination of the heuristics engine 230 of theaccuracy of the classification of previously classified data. Theheuristics engine 230 may determine the accuracy of the classificationof previously classified data based on, for example, feedback by theuser. This feedback may include, for example, manual reclassification ofdata, indications by a user of the accuracy of prior classifications,indications of the accuracy or usefulness of query results from queryingthe databases 232 that include the classified data, etc. Further, theheuristics engine 230 may determine the accuracy of the classificationof previously classified data based on, for example, the classificationsof data accessed more recently than the previously classified data. Insome cases, the more recent data may have been accessed before or at thesame time as the previously classified data, but may be classified afterthe previously classified data.

At block 408, the heuristics engine 230 can classify data using aheuristics analysis. As previously described, in some cases, theheuristics engine 230 can classify the data based on the number orpercentage of characteristics or attributes associated with the datathat match a particular classification.

In some embodiments, the task scheduler 224 schedules one or more of theblocks 404, 406, and 408. Further, in some cases, the task scheduler 224may determine whether to perform the process 400 and/or one or more ofthe blocks 404, 406, and 408. In some cases, one or more of the blocks404, 406, and 408 may be optional. For instance, an initialclassification may be associated with data when it is collected via theprocess associated with the block 404. The data may then be furtherclassified or reclassified at collection, or at a later time, using theprocess associated with the block 406, the block 408, or a combinationof the blocks 406 and 408.

At block 410, the data repository engine 222 stores or causes to bestored the data and the data classifications at the databases 232. Insome cases, the data repository engine 222 may store metadata associatedwith the data at the databases 232 instead of, or in addition to,storing the data.

At block 412, the data repository engine 222 can update the a posteriorialgorithms based on the classifications determined for the data. Inaddition, or alternatively, the a posteriori algorithms may be updatedbased on previously classified data. The a posteriori algorithms may beupdated based on customer feedback and/or the determination of theheuristics engine 230 as described above with respect to the block 406.Further, updating the a posteriori algorithms may include modifying theprobabilistic weights applied to one or more variables or pieces ofmetadata used to determine the one or more classifications of the data.Moreover, updating the a posteriori algorithms may include modifying theone or more variables or pieces of metadata used to determine the one ormore classifications of the data. In some cases, the block 412 caninclude modifying the heuristic algorithms used at the block 408. Forexample, the number of characteristics required to classify the datawith a particular classification may be modified. In addition, oralternatively, the weight applied to each of the characteristics may bemodified at the block 412.

As with the process 300, it is possible for the operations of theprocess 400 to be performed in a different order or in parallel. Forexample, the blocks 404 and 406 may be performed in a different order orin parallel.

FIG. 5 presents a flowchart of an example of a data query process 500.The process 500 can be implemented by any system that can process aquery provided by a user or another system and cause the results of thequery to be presented to the user or provided to the other system. Forexample, the process 500, in whole or in part, can be implemented by oneor more of the BIM access system 136, the user interface 240, the querymanager 242, and the query security manager 244. In some cases, theprocess 500 can be performed generally by the BIM system 130. Althoughany number of systems, in whole or in part, can implement the process500, to simplify discussion, the process 500 will be described inrelation to specific systems or subsystems of the BIM system 130.

The process 500 begins at block 502 where, for example, the userinterface 240 receives a set of one or more search parameters from auser via a client (e.g., the client 114). In some embodiments, thesearch parameters may be provided by another computing system. Forexample, in some embodiments, an application running on a server (notshown) or a client (e.g., the client 116) may be configured to query theBIM system 130 in response to an event or at a predetermined time. Theapplication can then use the result of the query to perform anapplication-specific process. For instance, an application or script maybe configured to query the BIM system 130 every month to determine theworkload of each employee or of the employees in a specific departmentof an organization to determine, for example, whether additionalemployees are needed or whether the allocation of human resources withindifferent departments should be redistributed. In this example, theapplication can determine whether to alert a user based on the result ofthe determination.

In some implementations, a user can provide a text-based query to theuser interface 240. This text-based query can be parsed by, for example,the user interface 240 and/or the query manager 242. Alternatively, orin addition, the user interface 240 can provide a set of query optionsand/or fields that a user can use to formulate a query of the BIM system130. The query options or fields can include any type of option or fieldthat can be used to form a query of the BIM system 130. For example, thequery options or fields can include tags, classifications, time ranges,keywords, user identifiers, user roles, customer identifiers, vendoridentifiers, corporate locations, geographic locations, etc. In someembodiments, the query options and/or search fields presented to a usermay be generated based on the data stored in the databases 232. Forexample, if the databases 232 includes email data, a sender field and arecipient field may be available for generating a query. However, if thedatabases 232 lacks any email data, the sender and recipient fields maynot be available for generating a query.

In some cases, the query security manager 244 can limit or determine thefields or options that the user interface 240 can present to the userbased on, for example, the user's permissions or the user's role. Forexample, fields relating to querying the BIM system 130 regarding thecontent of a business's email may be unavailable to a user who is notauthorized to search the contents of collected email. For instance,searching the content of emails may be limited to the legal departmentfor compliance purposes. Other users may be prohibited from searchingthe email content for privacy reasons.

At block 504, the query manager 242 formats a query based on the searchparameters received at block 502. Formatting the query may includetransforming the search parameters and query options provided by theuser into a form that can be processed by the data repository engine222. In certain embodiments, the block 504 may be optional. For example,in some cases the search parameters may be provided by the user in aform of a query that can be processed by the BIM system 130 withoutmodification.

At block 506, the user interface 240 receives one or more usercredentials from the user. In some cases, the user credentials may bereceived from an application. The user credentials can include any typeof credential or identifier that can be used to identify a user and/ordetermine a set of permissions or a level of authorization associatedwith the user. At block 508, the query security manager 244 can validatethe user, or application, based at least in part on the user credentialsreceived at the user interface 240. Validating the user can includeidentifying the user, identifying permissions associated with the user,the user's role, and/or an authorization level associated with the user.In some embodiments, if the query security manager 244 is unable tovalidate the user or determines that the user lacks authorization toaccess the BIM system 130 and/or query the databases 232, the querysecurity manager 244 may reject the user's query. Further, the userinterface 240 may inform the user that the user is not authorized toaccess the BIM system 130 or to query the databases 232. In someimplementations, if the user identifies as a guest or if the querysecurity manager 244 is unable to validate the guest, the user may beassociated with a guest identity and/or a set of guest permissions,which may permit limited access to the BIM system 130 or the data storedat the databases 232. In some cases, a guest may receive full access tothe BIM system 130. However, the actions of the guest may be logged orlogged differently than the actions of an identified user.

At block 510, the query security manager 244 attaches the userpermissions to the query. Alternatively, or in addition, the querysecurity manager may attach the user's identity, role, and/orauthorization level to the query. In some embodiments, one or more ofthe blocks 506, 508, and 510 may be optional.

At block 512, the query manager 242 retrieves data, and/or metadata,satisfying the query. In some implementations, the block 512 may includeproviding the query to the data repository engine 222 for processing.The data repository engine 222 can then query the databases 232 toobtain data that satisfies the query. This data can then be provided tothe query manager 242.

At decision block 514, the query security manager 244 can determinewhether the user has permission, or is authorized, to access the datathat satisfies the query. Determining whether the user has permission toaccess the data may be based on any type of factor that can be used todetermine whether a user can access data. For example, the determinationmay be based, at least in part, on the user's credentials, the user'spermissions, a security level associated with the data, etc. In somecases, the data repository engine 222 may perform the decision block 514as part of the process associated with the block 512.

If the query security manager 244 determines that the user does not havepermission to access the data, the query security manager 244 rejectsthe user query at block 516. In some cases, rejecting the user query mayinclude informing the user that the query is not authorized and/or thatthe user is not authorized to access the data associated with the query.In other cases, rejecting the user query may include doing nothing orpresenting an indication to the user that no data satisfies the user'squery.

If the query security manager 244 determines that the user does havepermission to access the data, the user interface 240 provides the userwith access to the data at block 518. Providing the user with access tothe data can include presenting the data on a webpage, in anapplication-generated window, in a file, in an email, or any othermethod for providing data to a user. In some cases, the data may becopied to a file and the user may be informed that the data is ready foraccess by, for example, providing the user with a copy of the file, alink to the file, or a location associated with the file.

With some queries, a user may be authorized to access some data thatsatisfies the query, but not other data that satisfies the query. Insuch cases, the user may be presented with the data that the user isauthorized to access. Further, the user may be informed that additionaldata exists that was not provided because, for example, the user was notauthorized to access the data. In other cases, the user may not beinformed that additional data exists that was not provided.

In some embodiments, the decision block 514 and block 516 may beoptional. For example, in some cases where the search parametersavailable to a user are based on the user's permissions, decision block514 may be superfluous. However, in other embodiments, both the searchparameters available to the user and the data the user can access areindependently determined based on the user's permissions.

Advantageously, in certain embodiments, the process 500 can be used toidentify new information and/or to determine trends that would be moredifficult or identify or not possible to identify based on a single datasource. For example, the process 500 can be used to identify the mostproductive and least productive employees of an organization based on avariety of metrics. Examining a single data source may not provide thisinformation because employees serve different roles. Further, differentemployees are unproductive in different ways. For example, someemployees may spend time an inordinate amount of time on socialnetworking sites or emailing friends. Other employees may procrastinateby playing games or by talking in the kitchen. Thus, examining onlyemail use or Internet activity may not provide an accurate determinationof which employees are more productive. In addition, some employees canaccomplish more work in less time than other employees. Thus, todetermine which employees are the most productive during working hoursrequires examining a number of data sources. The BIM system 130 makesthis possible by enabling a user to generate a query that relates theamount of time in the office to the amount of time spent procrastinatingat different types of activities to the number of work-related tasksthat are accomplished.

As a second example, the BIM system 130 can be used to identify thesalespersons and the communications techniques that are most effectivefor each customer. For instance, a user can generate a query thatrelates sales, the method of communication, the content ofcommunication, the salespersons contacting each of the customers, andthe customers. Based on the result of this query, a manager may be ableto determine that certain salespersons generate larger sales when usinga particular communication method with a particular customer while othersalespersons may be more effective with a different communication methodwith the particular customer or may be more effective with othercustomers.

An additional example of an application of the BIM system 130 caninclude gauging employee reaction to an executive memorandum or areorganization announcement. Queries can be generated to access allcommunications associated with the memorandum or announcement.Alternatively, or in addition, queries can be generated to identify thegeneral mood of employees post memorandum or announcement. These queriescan examine the tone of emails and other communications (e.g., socialnetworking posts, etc.). Additional examples of applications for usingthe BIM system 130 can include determining whether employees arecommunicating with external sources in a manner that adheres tocorporate policies, communicating with customers in a timely fashion, oraccessing data that is unrelated to their job role.

FIG. 6 illustrates an example of a heuristics engine 602. In a typicalembodiment, the heuristics engine 602 operates as described with respectto the heuristics engine 230 of FIG. 2. In a typical embodiment, theheuristics engine 602 is operable to perform a heuristics analysis foreach of a plurality of different classifications and thereby reach aclassification result for each classification. The classification resultmay be, for example, an indication whether a given classification shouldbe assigned to given data. For purposes of simplicity, the heuristicsengine 602 may be periodically described, by way of example, withrespect to a single classification.

The heuristics engine 602 includes a profiling engine 604 and acomparison engine 606. In a typical embodiment, the profiling engine 604is operable to develop one or more profiles 608 by performing, forexample, a multivariate analysis. For example, in certain embodiments,the one or more profiles 608 may relate to what constitutes a personalmessage. In these embodiments, the profiling engine 604 can perform amultivariate analysis of communications known to be personal messages inorder to develop the one or more profiles 608. In some embodiments, theone or more profiles 608 can also be manually established.

In typical embodiment, the one or more profiles 608 can each include aninclusion list 610 and a filter list 612. The inclusion list 610 caninclude a list of tokens such as, for example, words, that have beendetermined to be associated with the classification to which the profilecorresponds (e.g., personal message, business message, etc.). In atypical embodiment, for each token in the inclusion list 610, theappearance of the token in a communication makes it more likely that thecommunication should be assigned the classification. The filter list 612can include a list of tokens such as, for example, words, that have beendetermined to have little to no bearing on whether a given communicationshould be assigned the classification. In some embodiments, the filterlist 612 may be common across all classifications.

In certain embodiments, the inclusion list 610 may be associated withstatistical data that is maintained by the profiling engine 604. Basedon the statistical data, the one or more profiles 608 can provide means,or expected values, relative to the inclusion list 610. In someembodiments, the expected value may be based on an input such as alength of a given communication (e.g., a number of characters or words).According to this example, the expected value may be an expected numberof “hits” on the inclusion list 610 for a personal message of aparticular length. The particular length may correspond to a length ofthe given communication. By way of further example, the expected valuemay be an expected percentage of words of a personal message that are“hits” on the inclusion list 610. Optionally, the expected percentagemay be based on a length of the given communication in similar fashionto that described above with respect to the expected number of “hits.”

The comparison engine 606 is operable to compare data to the one or moreprofiles 108 based on configurations 614. The configurations 614typically include heuristics for establishing whether data should beclassified into the classification. In particular, the configurations614 can include one or more thresholds that are established relative tothe statistical data maintained by the profiling engine 604. Forexample, each threshold can be established as a number of standarddeviations relative to an expected value.

For example, continuing the personal-message classification exampledescribed above, the configurations 614 may require that an actual valueof a given metric for a new communication not be more than two standarddeviations below the expected value of the given metric. In thisfashion, if the actual value is not more than two standard deviationsbelow the expected value, the new communication may be assigned theclassification. The given metric may be, for example, a number orpercentage of “hits” as described above.

FIG. 7 presents a flowchart of an example of a heuristics process 700for classifying data into a classification. The process 700 can beimplemented by any system that can classify data and/or metadata. Forexample, the process 700, in whole or in part, can be implemented by aheuristics engine such as, for example, the heuristics engine 230 ofFIG. 2 or the heuristics engine 602 of FIG. 6. In some cases, theprocess 700 can be performed generally by the BIM system 130. Althoughany number of systems, in whole or in part, can implement the process700, to simplify discussion, the process 700 will be described inrelation to the heuristics engine. The process 700 begins at step 702.

At step 702, the heuristics engine receives new data. The new data maybe considered to be representative of any data, inclusive of metadata,for which classification is desired. The new data may be, for example, anew communication. From step 702, the process 700 proceeds to step 704.At step 704, the heuristics engine identifies one or more comparisonattributes in the new data. For example, the one or more comparisonattributes may be actual values for given metrics such as, for example,a number or percentage of “hits” on an inclusion list such as theinclusion list 610 of FIG. 6. From step 704, the process 700 proceeds tostep 706.

At step 706, the heuristics engine compares the one or more comparisonattributes with one or more thresholds. The one or more thresholds maybe defined as part of configurations such as, for example, theconfigurations 614 of FIG. 6. From step 706, the process 700 proceeds tostep 708. At step 708, the heuristics engine determines whetherclassification criteria has been satisfied. In a typical embodiment, theclassification criteria is representative of criteria for determiningwhether the new data should be assigned the classification. Theclassification criteria may specify, for example, that all or aparticular combination of the one or more thresholds be satisfied.

If it is determined at step 708 that the classification criteria notbeen satisfied, the process 700 proceeds to step 712 where the process700 ends without the new data being assigned the classification. If itis determined at step 708 that the classification criteria has beensatisfied, the process 700 proceeds to step 710. At step 710, theheuristics engine assigns the classification to the new data. From step710, the process 700 proceeds to step 712. At step 712, the process 700ends.

In certain embodiments, data queries as described with respect to FIGS.1-5 may also be accomplished using query packages. A query packagegenerally encapsulates package attributes such as, for example, searchparameters as described above with respect to queries, as long withother package attributes that enable enhanced functionality. Forexample, a query package can further encapsulate a package attributethat specifies a type of data visualization that is to be created usingthe queried data. The type of data visualization can include, forexample, scatterplots, pie charts, tables, bar charts, geospatialrepresentations, heat maps, chord charts, interactive graphs, bubblecharts, candlestick charts, stoplight charts, spring graphs, and/orother types of charts, graphs, or manners of displaying data.

In some embodiments, query packages may run one specific query. Invarious other embodiments, query packages may run multiple queries.Table 1 below lists example package attributes that can be included in agiven query package.

TABLE 1 PACKAGE ATTRIBUTE(S) DESCRIPTION Package Name A name by whichthe query package can be referenced. Package A description of the querypackage's operation. Description Security Scope Optionally specify asecurity and data access policy as described with respect to FIG. 2.Visualization Specifies a type of data visualization such as, forexample, scatterplots, pie charts, tables, bar charts, geospatialrepresentations, heat maps, chord charts, interactive graphs, bubblecharts, candlestick charts, stoplight charts, spring graphs, and/orother types of charts, graphs, or manners of displaying data. In caseswhere the package is representative of multiple queries, thevisualization attribute may be represented as an array of visualizationsthat can each have a visualization type, a data source, and a targetentity (e.g., entity that is being counted such as, for example,messages, message participants, etc.) Default Group-By Retrieves dataaccording to, for example, one or Field more data columns (e.g., bylocation, department, etc.). Aggregation A time period such as, forexample, daily, hourly, Period etc. Data-Smoothing Specifies one or morealgorithms that attempt to Attributes capture important patterns in thedata, while leaving out noise or other fine-scale structures/rapidphenomena. Visualization- Certain types of visualizations may requireSpecific additional attributes such as, for example, Attributesspecification of settings for sorting, number of elements in a dataseries, etc. Facet Names Data (or fields) related to the query that canbe used to categorize data. Particular values of facets can be used, forexample, to constrain query results. Array of Entities An array ofentities that can each have, for example, a name, entity type (e.g.,message), filter expression, and a parent-entity property. Array ofFacets An array of facets that can each have, for example, a name,group-by field, and a minimum/maximum number of results to show.

In a typical embodiment, query packages can be shared among users ordistributed to users, for example, by an administrator. In a typicalembodiment, one user may share a particular query package with anotheruser or group of users via the user interface 240. In similar fashionthe other user or group of users can accept the query package via theuser interface 240. Therefore, the query manager 242 can add the sharedquery package for the user or group of users. As described above, thequery manager 242 generally maintains each user's query packages in atable by a unique identifier. In a typical embodiment, query packagesfurther facilitate sharing by specifying data and data sources in arelative fashion that is, for example, relative to a user running thequery. For example, package attributes can refer to data owned by a userrunning the query or to data that is owned by users under thesupervision of the user running the query rather than to specific dataor users.

FIG. 8 presents a flowchart of an example of a data query process 800that uses query packages. The process 800 can be implemented by anysystem that can process a query package provided by a user or anothersystem and cause the results of a query encapsulated therein to bepresented to the user or provided to the other system. For example, theprocess 800, in whole or in part, can be implemented by one or more ofthe BIM access system 136, the user interface 240, the query manager242, and the query security manager 244. In some cases, the process 800can be performed generally by the BIM system 130. Although any number ofsystems, in whole or in part, can implement the process 800, to simplifydiscussion, the process 800 will be described in relation to specificsystems or subsystems of the BIM system 130.

The process 800 begins at block 802 where, for example, the userinterface 240 from a user a selection of a query package. In variousembodiments, the query package may be selected from a list or graphicalrepresentation of query packages. As described above, the query packagetypically specifies a data visualization based on a data query. Invarious embodiments, the query package may specify more than one datavisualization and/or be based on more than one data query. At block 804,the query manager 242 formats one or more queries based on the querypackage selected at block 802. In certain embodiments, the block 804 maybe optional. For example, in some cases the query package may alreadyinclude a query that can be processed by the BIM system 130 withoutmodification.

At block 806, the user interface 240 receives one or more usercredentials from the user. In some cases, the user credentials may bereceived from an application. The user credentials can include any typeof credential or identifier that can be used to identify a user and/ordetermine a set of permissions or a level of authorization associatedwith the user. At block 808, the query security manager 244 can validatethe user, or application, based at least in part on the user credentialsreceived at the user interface 240. Validating the user can includeidentifying the user, identifying permissions associated with the user,the user's role, and/or an authorization level associated with the user.In some embodiments, if the query security manager 244 is unable tovalidate the user or determines that the user lacks authorization toaccess the BIM system 130 and/or query the databases 232, the querysecurity manager 244 may reject the one or more queries. Further, theuser interface 240 may inform the user that the user is not authorizedto access the BIM system 130 or to query the databases 232. In someimplementations, if the user identifies as a guest or if the querysecurity manager 244 is unable to validate the guest, the user may beassociated with a guest identity and/or a set of guest permissions,which may permit limited access to the BIM system 130 or the data storedat the databases 232. In some cases, a guest may receive full access tothe BIM system 130. However, the actions of the guest may be logged orlogged differently than the actions of an identified user.

At block 810, the query security manager 244 attaches the userpermissions to the one or more queries. Alternatively, or in addition,the query security manager may attach the user's identity, role, and/orauthorization level to the one or more queries. In some embodiments, oneor more of the blocks 806, 808, and 810 may be optional.

At block 812, the query manager 242 retrieves data, and/or metadata,satisfying the one or more queries. In some implementations, the block812 may include providing the one or more queries to the data repositoryengine 222 for processing. The data repository engine 222 can then querythe databases 232 to obtain data that satisfies the one or more queries.This data can then be provided to the query manager 242.

At decision block 814, the query security manager 244 can determinewhether the user has permission, or is authorized, to access the datathat satisfies the one or more queries. Determining whether the user haspermission to access the data may be based on any type of factor thatcan be used to determine whether a user can access data. For example,the determination may be based, at least in part, on the user'scredentials, the user's permissions, a security level associated withthe data, etc. In some cases, the data repository engine 222 may performthe decision block 814 as part of the process associated with the block812.

If the query security manager 244 determines that the user does not havepermission to access the data, the query security manager 244 rejectsthe one or more queries at block 816. In some cases, rejecting the oneor more queries may include informing the user that the query packagenot authorized and/or that the user is not authorized to access the dataassociated with the query package. In other cases, rejecting the one ormore queries may include doing nothing or presenting an indication tothe user that no data satisfies the query package.

If the query security manager 244 determines that the user does havepermission to access the data, the query manager 242 (or a separatevisualization component) generates the data visualization at block 818.At block 820, the user interface 240 provides the data visualization tothe user. Providing the user the data visualization can includepresenting the data visualization on a webpage, in anapplication-generated window, in a file, in an email, or any othermethod for providing data to a user. In some cases, the datavisualization may be copied to a file and the user may be informed thatthe data visualization is ready for access by, for example, providingthe user with a copy of the file, a link to the file, or a locationassociated with the file.

FIG. 9 illustrates an example of a user interface that can be used by auser to select a query package.

FIG. 10 illustrates an example of a user interface that can be used by auser to create or modify a query package.

Table 2 below provides an example of a data model that can be utilizedby a BIM system such as, for example, the BIM system 130. In particular,Table 2 illustrates several entities that can be used to modelcommunications such as, for example, personal communications or businesscommunications.

TABLE 2 ENTITY FIELD DATA TYPE Message Body String ClassificationsStrings Content String Date Date Time External Recipients Entities(Message Participant) File Attachments Entities (File) In reply toEntity (Message) Internal Recipients Entities (Message Participant) IsEncrypted Boolean Message Attachments Entities (Messages) Message IDsStrings Original Message ID String Participants Entities (MessageParticipant) Platform Enum (Message Platform type) Recipients Entities(Message Participant) Send Date Date Time Send Time of Day Time SenderEntity (Message Participant) Size Integer Subject String Thread Entity(Message Thread) Type Enum (Message Address Type) Message Date Date TimeParticipant Deletion Date Date Time Delivery Time Time Span Has BeenDelivered Boolean ID String Is Addressed in BCC Boolean Is Addressed inCC Boolean Is Addressed in TO Boolean Is External Recipient Boolean IsInternal Recipient Boolean Is Recipient Boolean Is Sender BooleanMessgeAsSender Entity (Message) MessageAsInternalRecipient Entity(Message) MessageAsExternalRecipient Entity (Message) Message AddressEntity (Message Address) Person Entity (Person Snapshot) Receipt DateDate Time Receipt Time of Day Time Responses Entity (Message) ResponseTime Time Span Message Domain Entity (ONS Domain) Address Is ExternalBoolean Is Internal Boolean Name String Platform Enum (Message PlatformType) Type Enum (Message Address Type DNS Name String Domain AddressEntities (Messaging Address) Person All Reports Entities (PersonSnapshot) Snapshot Company String Department String Direct ReportsEntities (Person Snapshot) First Name String Full Name String HistoryEntity (Person History) ID String Initials String Job Title String LastName String Manager Entity (Person Snapshot) Managers Entities (PersonSnapshot) Messaging Addresses Entities (Message Address) MessageParticipants Office String OU String Snapshot Date Date Time StreetAddress Complex Type (Street Address) Telephone Numbers Strings StreetCity String Address Country or Region String PO Box String State orProvince String Street String Zip or Postal Code String Person CurrentEntity (Person) History Historic Entities (Person) ID String MessagesEntities (Message) Timestamp Date Time Message ID String Thread MessagesEntities (Message) Participants Entities (Message Participant Threadsubject String Timestamp Date Time File Filename String ID StringMessages Entities (Message) Modified Date Date Time Size Integer HashStringIII. Data Loss Prevention

FIG. 11 illustrates an embodiment of an implementation of thecross-platform DLP system 146 of FIG. 1. The cross-platform DLP system146 includes a DLP detection engine 1148 and a DLP management console1160. The DLP detection engine 1148 typically performs operations thatcreate and/or activate cross-platform DLP policies. The DLP detectionengine 1148 can also monitor communications to identify violations ofthose cross-platform DLP policies. In a typical embodiments, the DLPmanagement console 1160 performs operations that report and/or enforcecross-platform DLP policies responsive, for example, to violationsdetected by the DLP detection engine 1148.

As part of performing their respective functionality, the DLP detectionengine 1148 and the DLP management console 1160 are operable tocommunicate with communications platforms 1176. The communicationsplatforms 1176, in general, are representative of at least a portion ofthe internal data sources 120 and the external data sources 122 asillustrated in FIG. 1. For ease of illustration and description, theinternal data sources 120 and the external data sources 122 are showncollectively as the communications platforms 1176.

In the illustrated embodiment, the communications platforms 1176 includean application programming interface (API) A 1174 a, an API B 1174 b,and an API C 1174 c (collectively, APIs 1174). The APIs 1174 may each beconsidered a logical encapsulation of functions and operations providedby a distinct communications platform of the communications platforms1176. In many cases, it may be that such functions and operations arenot exposed by each of the communications platforms 1176 via a commonAPI but rather via a plurality of native APIs and/or access interfaces.It should be appreciated that some or all of the communicationsplatforms may not provide any API. Likewise, although the APIs 1174 areshown for illustrative purposes, it should be appreciated that thecommunications platforms 1176 can include any number of APIs and anynumber of communications platforms.

Each of the APIs 1174 provides an interface to native DLP supportprovided by a given communications platform of the communicationsplatforms 1176. Examples of native DLP support that can be provided bythe given communications platform include specifying a native DLP policyin a structure and format understood by that communications platform,activating a native DLP policy, implementing enforcement actions allowedby that communications platform (e.g., placing restrictions on a user orgroup of users), and/or the like. It should be appreciated that the APIs1174 may not provide homogenous functionality. For example, the API A1174 a might permit certain enforcement actions but might not includeany functionality for specifying and/or activating native DLP policies.Continuing this example, the API B 1174 b might include all suchfunctionality. By way of further example, different APIs of the APIs1174 may enable different enforcement actions and/or specification orselection of different types of native DLP policies.

In a typical embodiment, the cross-platform DLP system 146 enables acommon interface into the APIs 1174 via a platform adaptor A 1172 a, aplatform adaptor B 1172 b, and a platform adaptor C 1172 c(collectively, platform adaptors 1172). In similar fashion to the APIs1174, the number of platform adaptors 1172 is illustrative in nature.Each of the platform adaptors 1172 typically maps a standard set offunctionality to corresponding sets of calls to the APIs 1174. In thatway, the platform adaptors 1172 can be collectively considered astandard API that is operable to be called, for example, by componentsof the DLP detection engine 1148 and the DLP management console 1160.The standard API of the platform adaptors 1172 can include, for example,functions that specify a native DLP policy on a given communicationsplatform, functions that activate a native DLP policy, functions thatimplement specific enforcement actions, etc. By way of example, theplatform adaptor A 1172 a can map each call of the standard API to acorresponding API call on the API A 1174 a to the extent such acorresponding API call exists. The platform adaptor A 1172 a caninclude, for example, a capabilities call that results in allcapabilities of the API A 1174 a being returned. The capabilities caninclude, for example, features of the standard API that the API A 1174 asupports. The platform adaptor B 1172 b and the platform adaptor C 1172c can be similarly configured relative to the API B 1174 b and the API C1174 c, respectively.

In the illustrated embodiment, the DLP detection engine 1148 includes anative DLP detector 1150, a policy abstraction module 1252, a custom DLPdetector 1154, a DLP risk profiler 1156, and a DLP context module 1158.The policy abstraction module 1252 provides an interface for anappropriate user such as, for example, an administrator, to createand/or activate cross-platform DLP policies. The policy abstractionmodule 1252 typically creates the cross-platform DLP policies in astandardized policy format. The standardized policy format can generallybe any format for specifying rules and/or Boolean conditions. In somecases, the standardized policy format may correspond to a formatnatively supported by one or more of the communications platforms 1176.In a typical embodiment, how the cross-platform DLP policies areactivated on the communications platforms 1176 can depend on, amongother things, an extent to which each of the communications platforms1176 provides DLP support, administrator preference, etc.

In many cases, some or all of the communications platforms 1176 mayprovide at least some native DLP support. In these cases, if it isdesired to activate a given cross-platform DLP policy natively on thecommunications platforms 1176, the policy abstraction module 1252 canprovide the given cross-platform DLP policy in a corresponding call tothe platform adaptors 1172. In a typical embodiment, the platformadaptors 1172 are operable to receive the given cross-platform DLPpolicy in the standardized policy format and re-specify it in arespective native format expected by each of the communicationsplatforms 1176, for example, by translating the given cross-platform DLPpolicy from the standardized policy format to the respective nativeformat. In some cases, some of the communications platforms 1176 mayhave a pre-existing native DLP policy that is deemed equivalent to agiven cross-platform DLP policy. In these cases, no new native DLPpolicy usually needs to be specified. Rather, a corresponding platformadaptor of the platform adaptors 1172 can maintain a mapping to theequivalent native DLP policy. Once the given cross-platform DLP policyhas been created and/or natively activated, as appropriate, the nativeDLP detector 1150 can perform DLP detection. Operation of the native DLPdetector 1150 will be described in greater detail below.

As mentioned above, some or all of the communications platforms 1176 mayeither provide no DLP support or provide DLP support that isinsufficient in some respect for natively activating the givencross-platform DLP policy. In addition, even if sufficient DLP supportis provided by the communications platforms 1176, it may otherwise bedesirable by the administrator for the cross-platform DLP system 146 tocentrally activate the given cross-platform DLP policy for a particularset of communications platforms of the communications platforms 1176.Central activation typically means that, as to the particular set ofcommunications platforms, violation detection is performed centrally bythe cross-platform DLP system 146 without relying on native DLPfunctionality, if any, of the particular set of communicationsplatforms. Under these circumstances, the policy abstraction module 1252can provide the given cross-platform DLP policy to the custom DLPdetector 1154 for storage and implementation. The custom DLP detector1154 will be described in greater detail below.

In a typical embodiment, the policy abstraction module 1252 centrallymaintains all cross-platform DLP policies, for example, in a database,persistent file-based storage, and/or the like. In some cases, allcross-platform DLP policies can be maintained on the BIM system 130, forexample, in one or more of the databases 232. In addition, the policyabstraction module 1252 generally tracks how each cross-platform DLPpolicy is activated on each of the communications platforms 1176. Asdescribed above, cross-platform DLP policies can be activated nativelyon the communications platforms 1176, centrally activated by thecross-platform DLP system 146, and/or a combination thereof. The mannerof activation can be maintained by the policy abstraction module 1252 aspart of its tracking functionality.

The native DLP detector 1150 typically manages violation detection fornative activations of cross-platform DLP policies. In a typicalembodiment, the native DLP detector 1150 can import violations of nativeDLP policies, for example, from logs that are generated by suchplatforms. In some cases, the logs can be accessed via, for example, theplatform adaptors 1172 and the APIs 1174. In other cases, it may bepossible to access such logs without the platform adaptors 1172 and/orthe APIs 1174 if, for example, a network storage location of the logs isknown.

The custom DLP detector 1154 typically manages violation detection forcentral activations of cross-platform DLP policies. In a typicalembodiment, the custom DLP detector 1154 centrally performs violationdetection on communications centrally collected and stored by the BIMsystem 130 as described above. In this fashion, with respect to thecentral activations, the cross-platform DLP policy can be applied andevaluated against such communications for purposes of identifyingviolations.

The DLP risk profiler 1156 is operable to identify quasi-violations,assess risk of cross-platform DLP policies being violated and/orquasi-violated, and/or the like. A quasi-violation, as used herein,refers to user activity or behavior that does not literally violate agiven policy but that is measurably and configurably close to doing so.An actual violation, as used herein, refers to user activity or behaviorthat literally violates a given policy. For purposes of this disclosure,the term violation can encompass both actual violations andquasi-violations. What constitutes measurably close can be empiricallydefined, for example, via statistical, mathematical, and/or rule-basedmethods.

For instance, a particular cross-platform DLP policy could prohibitsending files (e.g., email attachments) that are larger than a maximumsize (e.g., ten megabytes). According to this example, measurably closecould be empirically defined as being within a certain percentage of themaximum size (e.g., five percent), being within a certain numeric rangerelative to the maximum size (e.g., greater than nine megabytes but lessthan ten megabytes), etc. Measurably close could be further defined toinclude a repetition factor. For example, quasi-violations could belimited to cases where a given user has met the above-describedempirical definition at least a specified number of times (e.g., five)within a specified window of time (e.g., one hour, one day, one week,etc.). Quasi-violations could also be limited to such cases where anumber of times that the user has sent such files is within a certainnumber of standard deviations of an expected value for the specifiedwindow of time. It should be appreciated that similar principles couldbe applied to automatically identify quasi-violations for other types ofcross-platform DLP policies that specify, for example, values and/orthresholds.

In various embodiments, the DLP risk profiler 1156 can also trigger aquasi-violation based on, for example, an assessment that across-platform DLP policy is in imminent risk of being violated. Forexample, certain DLP policies may relate to values that tend to increaseover time or that exhibit a pattern (e.g., linear or exponential). Forexample, a given policy could limit each user to a certain quantity ofinstant messages per day (e.g., 100). If it appears that a particularuser is projected to reach the certain quantity (e.g., based on a lineartrend) or is within a defined range of the certain quantity (e.g.,ninety-five instant messages before 2:00 pm local time), aquasi-violation could be triggered. A quasi-violation could also betriggered if, for example, a characteristic precursor to an actualviolation has been detected. For example, a particular cross-platformDLP policy could specify that communications to customer A cannot occurvia email. In that case, a characteristic precursor to an actualviolation could be the appearance in a user's email contacts of an emailaddress specifying Customer A's domain (e.g., example.com).

In various embodiments, the DLP risk profiler 1156 can also be utilizedfor on-demand risk assessment. For example, designated users (asdescribed further below), administrators, and/or the like can use theDLP risk profiler 1156 to perform a risk query. In various embodiments,the risk query can be equivalent to a cross-platform DLP policy. Forexample, the risk query can be embody a prospective cross-platform DLPpolicy. An administrator, for example, could use the risk query tosearch communications collected by the BIM system 130 to determine abusiness impact of implementing the cross-platform DLP policy. The riskquery is typically tailored to identify information related to thebusiness impact. After execution of the risk query, the information isreturned to the administrator. Based on the information returned by therisk query, the administrator could determine, inter alia, a volume ofusers exhibiting behaviors prohibited by the prospective cross-platformDLP policy, an overall number of past communications within a certainperiod of time that would have been implicated by the prospectivecross-platform DLP policy, which departments or organizational unitswould be most impacted by the prospective cross-platform DLP policy,etc.

The DLP context module 1158 is operable to dynamically acquire contextinformation responsive, for example, to a detected violation. In variousembodiments, what constitutes context information for a violation of agiven cross-platform DLP policy can be pre-defined as a query package asdescribed above. Responsive to a violation of the given cross-platformDLP policy, the query package can be executed to yield the contextinformation. An example of defining and executing a query package willbe described in greater detail with respect to FIGS. 14 and 16. Also, insome embodiments, all or part of what constitutes context informationcan be specified, for example, by designated users upon receipt of analert. In these embodiments, the designated users can request particulardata points that are of interest given the contents of the alert. Itshould be appreciated that the context information can be acquired fromany of the communications platforms 1176. For example, if a user were toviolate the cross-platform DLP policy on an email platform, the contextinformation could include information related to the user'scontemporaneous communications on each of an instant-messaging platform,an enterprise social-networking platform, and/or any of thecommunications platforms 1176.

The DLP management console 1160 includes a user permission manager 1162,a reporting module 1164, and a credentials module 1170. In a typicalembodiment, the user permission manager 1162 maintains an access profilefor each user of the cross-platform DLP system 146. The access profilecan be created based on, for example, directory information (e.g.,Active Directory). In some embodiments, the access profile can becreated by an administrator.

The access profile typically specifies a scope of violations that theuser is authorized to view and/or for which the user should receivealerts or reports (e.g., all staff, all employees beneath the user in anemployee hierarchy, etc.). The access profile also typically specifiesenforcement actions that the user is allowed to take if, for example,DLP violations have occurred. In some cases, the user's ability to takethe enforcement action may be conditioned on violation(s) havingoccurred. In other cases, some or all of the enforcement actions may beavailable to the user unconditionally. For purposes of this disclosure,a given user may be considered a designated user with respect to thosecross-platform DLP policies for which the given user is authorized toview violations, receive reports or alerts on violations, and/or takeenforcement actions.

The reporting module 1164 provides an interface to display to designatedusers information pertaining to violations of cross-platform DLPpolicies and any context information. In various embodiments, thereporting module 1164 is operable to initiate alerts or present reportsusing, for example, any of the communications platforms 1176. Thereports and/or alerts can be presented using, for example, SMS textmessage, email, instant message, a dashboard interface, social mediamessages, web pages, etc. The reporting module 1164 can also providevia, for example, a dashboard interface, any enforcement actions thateach designated user is authorized to take. The enforcement actions caninclude, for example, blocking particular domains (e.g., example.com),suspending a user account on all or selected ones of the communicationsplatforms 1176, blocking sending communications, blocking receivingcommunications, and/or the like. In some embodiments, the enforcementactions, can include a “kill” option that suspends a user or group ofusers' access to all of the communications platforms 1176.

The credentials module 1170 typically stores administrative credentialsfor accessing each of the communications platforms 1176 via, forexample, the APIs 1174. In various embodiments, the credentials module1170 enables designated users to execute administrative actions (e.g.,enforcement actions) that the designated users would ordinarily lackpermission to perform, thereby saving time and resources ofadministrators. The user permission manager 1162 can determine, viaaccess profiles, enforcement actions that the designated users areauthorized to perform. Responsive to selections by the designated users,the credentials module 1170 can execute those enforcement actions on thecommunications platforms 1176 using the stored administrativecredentials.

FIG. 12 presents a flowchart of an example of a process 1200 forcross-platform DLP implementation. The process 1200 can be implementedby any system that can access data, evaluate data, and/or interact withusers. For example, the process 1200, in whole or in part, can beimplemented by one or more of the BIM system 130, the DLP detectionengine 1148, the DLP management console 1160, and/or components thereof.Although any number of systems, in whole or in part, can implement theprocess 1200, to simplify discussion, the process 1200 will be describedin relation to specific systems or subsystems of the networked computingenvironment 100 of FIG. 1 and/or the cross-platform DLP system 146. Forillustrative purposes, the process 1200 will be described with respectto a single cross-platform DLP policy. However, it should be appreciatedthat the process 1200 can be repeated relative to numerouscross-platform DLP policies that will be maintained by thecross-platform DLP system 146.

At block 1202, the DLP detection engine 1148 activates a cross-platformDLP policy on a set of communications platforms of the communicationsplatforms 1176 for enforcement against a set of users (e.g., a user orgroup of users). In typical embodiment, the block 1202 includes thepolicy abstraction module 1252 interacting with an administrator toselect and/or create the cross-platform DLP policy, select the set ofusers, and choose the set of communications platforms. In some cases,the set of communications platforms may include only one of thecommunications platforms 1176. As described above, relative to the setof communications platforms, the cross-platform DLP policy can becentrally activated, natively activated, or a combination thereof. Inthe case of native activation, the cross-platform DLP policy can includeinitiating a native DLP policy on one or more of the set ofcommunications platforms. An example of how the cross-platform DLPpolicy can be created will be described with respect to FIG. 13.

At block 1204, the DLP detection engine 1148 monitors communications ofthe set of users on the set of communications platforms for violationsof the cross-platform DLP policy. In various embodiments, the block 1204can include monitoring for actual violations, quasi-violations, or both.In a typical embodiment, as part of the block 1204, the native DLPdetector 1150 tracks violations of any native activations of thecross-platform DLP policy. The native activations can include, forexample, native DLP policies that are a translated form of or are deemedequivalent to the cross-platform DLP policy. In a typical embodiment,the custom DLP detector 1154 centrally detects violations of any centralactivations of the cross-platform DLP policy. The central detectiontypically includes evaluating, against the cross-platform DLP policy,communications collected by the BIM system 130 that correspond to thecentral activations. In addition, the block 1204 can also include theDLP risk profiler 1156 monitoring for quasi-violations of thecross-platform DLP policy as described above.

At decision block 1206, the DLP detection engine 1148 determines whethera violation has been detected, for example, by the native DLP detector1150, the custom DLP detector 1154, and/or the DLP risk profiler 1156.Responsive to a detected violation, the process 1200 proceeds to block1208. Otherwise, the process 1200 returns to the block 1204 and proceedsas described above. At the block 1208, the DLP context module 1158dynamically acquires context information for the detected violation. Anexample of how context information can be specified will be describedwith respect to FIG. 13. An example of dynamically acquiring contextinformation will be described with respect to FIG. 14.

At block 1210, the DLP management console 1160 publishes violationinformation to at least one designated user. The at least one designateduser can include, for example, a manager of a user who initiated theviolation. The violation information can include, for example,information associated with the detected violation, the contextinformation, and/or the like. The information associated with thedetected violation can include, for example, user-identificationinformation (e.g., name, user name, ID, etc.), violation type (e.g.,identification of the particular violation if multiple violation typesare allowed by the cross-platform DLP policy), a time of the violation,a communication that constituted the violation, a communicationidentifier for the communication that constituted the violation, and/orother information that is readily accessible at a time of violationdetection. In a typical embodiment, the block 1210 results in theviolation information being made accessible to the at least onedesignated user. In many cases, the block 1210 may include providing theat least one designated user with options for selecting one or moreenforcement actions as a result of the detected violation. An example ofpublishing violation information will be described with respect to FIG.15.

FIG. 13 presents a flowchart of an example of a process 1300 forcreating a cross-platform DLP policy. The process 1300 can beimplemented by any system that can access data, evaluate data, and/orinteract with users. For example, the process 1300, in whole or in part,can be implemented by one or more of the BIM system 130, the DLPdetection engine 1148, the DLP management console 1160, and/orcomponents thereof. Although any number of systems, in whole or in part,can implement the process 1300, to simplify discussion, the process 1300will be described in relation to specific systems or subsystems of thenetworked computing environment 100 of FIG. 1 and/or the cross-platformDLP system 146. In various embodiments, the process 1300 can beperformed as part of the block 1202 of FIG. 12.

At block 1302, the policy abstraction module 1252 defines across-platform DLP policy. The block 1302 can include the policyabstraction module 1252 interacting with an administrator to establish,for example, a name and/or unique identifier for the cross-platform DLPpolicy. The block 1302 can include, for example, empirically defininghow the cross-platform DLP policy can be violated responsive to inputfrom the administrator. The empirical definition can include definingboth actual violations and quasi-violations. In some embodiments,definitions of quasi-violations can be automatically derived from thedefinitions of actual violations (e.g., as percentages, ranges, standarddeviations relative to expected values, etc.). In some embodiments, thecross-platform DLP policy can be defined in terms of a native DLP policyof a particular communications platform of the communications platforms1176. In these embodiments, the administrator can be permitted toidentify or provide the native DLP policy, which policy the policyabstraction module 1252 can then import and re-specify in a standardizedformat (e.g., by translation).

At block 1304, the policy abstraction module 1252 identifies one or morecontextual parameters. The contextual parameters generally representvariable, violation-specification information that will be used as abasis for generating context information. The contextual parameters caninclude, for example, user-identification information (e.g., name, username, ID, etc.), violation type (e.g., identification of the particularviolation if multiple violation types are allowed by the cross-platformDLP policy), a time of the violation, a communication that constitutedthe violation, a communication identifier for the communication thatconstituted the violation, and/or other information that is readilyaccessible at a time of violation detection.

At block 1306, the policy abstraction module 1252 generates a querypackage that can be used to dynamically generate context informationresponsive to a detected violation. The query package can be specified,for example, as described above with respect to FIGS. 1-12. In general,the query package is tailored to request, in terms of the contextualparameters, context information for violations of the cross-platform DLPpolicy. The requested context information can include, for example,prior violations by a violating user within a certain period of time,communications by or to the violating user within a certain period oftime before and/or after the violation (e.g., including communicationson any of the communications platforms 1176), the violating user'scommunication patterns (e.g., who the violating user communicates withmost, the violating user's volume of communications, top topicsdiscussed in communications, etc.), and/or the like. The requestedcontext information can also include aggregated context information suchas, for example, a number of violations of the cross-platform DLPplatform across a given organization or enterprise, a number ofviolations within the violating user's department or organization unit,most frequently taken enforcement actions by other managers responsiveto violations of the cross-platform DLP policy, and/or the like.

At block 1308, the policy abstraction module 1252 configures a reportingworkflow for violations of the cross-platform DLP policy. Theconfiguring can include, for example, defining one or more designatedusers who can view violations, receive alerts or reports of violations,and/or take enforcement actions responsive to violations. In some cases,the one or more designated users may be defined generally using, forexample, directory services (e.g., Active Directory). For example, theone or more designated users could include each direct manager of aviolating user. In other cases, the one or more designated users can bedefined as specific users for each user that is to be covered by thepolicy (e.g., a manually designated user for each user or group usersimpacted by the cross-platform DLP policy). The configuration at theblock 1308 can also include, for example, establishing one or moreenforcement actions that can be taken by the one or more designatedusers. In various embodiments, an access profile for each of thedesignated users can be used to establish which enforcement actions eachdesignated user is permitted to take.

At block 1310, the policy abstraction module 1252 stores thecross-platform DLP policy. The storage can include, for example, storageof the query package as linked to the cross-platform DLP policy. Invarious embodiments, the storage at the block 1310 can be in memoryaccessible to the policy abstraction module 1252, in the databases 232of FIG. 2, and/or the like.

FIG. 14 presents a flowchart of an example of a process 1400 fordynamically acquiring context information responsive to a detectedviolation of a cross-platform DLP policy. The detected violation mayhave been detected, for example, via the native DLP detector 1150, thecustom DLP detector 1154, and/or the DLP risk profiler 1156. The process1400 can be implemented by any system that can access data, evaluatedata, and/or interact with users. For example, the process 1400, inwhole or in part, can be implemented by one or more of the BIM system130, the DLP detection engine 1148, the DLP management console 1160,and/or components thereof. Although any number of systems, in whole orin part, can implement the process 1400, to simplify discussion, theprocess 1400 will be described in relation to specific systems orsubsystems of the networked computing environment 100 of FIG. 1 and/orthe cross-platform DLP system 146. In various embodiments, the process1400 can be performed as part of the block 1208 of FIG. 12.

At block 1402, the DLP context module 1158 retrieves a query packagethat is linked to the cross-platform DLP policy. In a typicalembodiment, the query package may have been generated at the block 1306of FIG. 13. At block 1404, the DLP context module 1158 accesses valuesof contextual parameters that are needed for the query package. Thevalues can typically be obtained from information associated with thedetected violation. The information associated with the detectedviolation is typically obtained by the native DLP detector 1150, thecustom DLP detector 1154, and/or the DLP risk profiler 1156, asappropriate. At block 1406, the DLP context module 1158 executes thequery package, for example, on the BIM system 130. At block 1408, theDLP context module 1158 receives the context information responsive tothe execution of the query package.

FIG. 15 presents a flowchart of an example of a process 1500 forpublishing violation information to one or more designated usersresponsive, for example, to a detected violation. The detected violationmay have been detected, for example, via the native DLP detector 1150,the custom DLP detector 1154, and/or the DLP risk profiler 1156. Theprocess 1500 can be implemented by any system that can access data,evaluate data, and/or interact with users. For example, the process1500, in whole or in part, can be implemented by one or more of the BIMsystem 130, the DLP detection engine 1148, the DLP management console1160, and/or components thereof. Although any number of systems, inwhole or in part, can implement the process 1500, to simplifydiscussion, the process 1500 will be described in relation to specificsystems or subsystems of the networked computing environment 100 of FIG.1 and/or the cross-platform DLP system 146. In various embodiments, theprocess 1500 can be performed as part of the block 1210 of FIG. 12.

At block 1502, the user permission manager 1162 determines whichenforcement actions that each designated user has permission to perform.In a typical embodiment, the determination can be made by ascertainingwhich enforcement actions of a set of potential enforcement actions areallowed by each designated user's access profile. At block 1504, thereporting module 1164 provides an interface for each designated user toselect the determined enforcement actions. The interface can be, forexample, a web interface, an interface on one of the communicationsplatforms 1176, and/or the like. At decision block 1506, the reportingmodule 1164 determines whether a designated user has selected one of thedetermined enforcement actions. If not, the process 1500 returns to theblock 1504 and proceeds as described above. If it is determined at thedecision block 1506 that the designated user has selected one of thedetermined enforcement actions, the process 1500 proceeds to block 1508.In a typical embodiment, the selected enforcement action can be madewith respect to one or more communications platforms of thecommunications platforms 1176. At block 1508, the credentials module1170 causes the selected enforcement action to be executed withadministrator privileges on each of the one or more communicationsplatforms. At block 1510, the executed enforcement action is recorded,for example, in one or more of the databases 232. The block 1510 caninclude recording, for example, the executed enforcement, informationassociated with the detected violation, any context information, and/orthe like.

FIG. 16 illustrates an example of an access profile 1676. In thedepicted embodiment, the access profile grants a “Manager X” a right toperform enforcement actions of “block sending,” “block receiving,”“suspend account,” and “report abuse.” As illustrated, the accessprofile 1676 grants the above-mentioned enforcement actions for “allhis/her staff,” which, in a typical embodiment, can be determined using,for example, directory services (e.g., Active Directory). In some cases,the access profile 1676 can include other enforcement actions such as,for example, “allow with warning.” In these embodiments, any usersimpacted by the enforcement actions can be presented a warning that mustbe explicitly acknowledged and disregarded before the cross-platform DLPpolicy can be violated in the future.

IV. User Context Analysis and Context-Based DLP

In various embodiments, many of the principles described above can alsobe leveraged to generate intelligence regarding how user behavior on aremote computer system differs based, at least in part, on user context.In general, a user context is representative of one or more conditionsunder which one or more user-initiated events occur. A user-initiatedevent can be, for example, a user-initiated communication event on acommunications platform. Examples of user-initiated communication eventsinclude a user creating, drafting, receiving, viewing, opening, editing,transmitting, or otherwise accessing or acting upon a communication.Communications can include, for example, emails, blogs, wikis,documents, presentations, social-media messages, and/or the like.User-initiated events can also include other user behaviors such as, forexample, a user accessing or manipulating non-communication computerresources and artifacts thereof.

In various embodiments, user-initiated events can be originated via auser device in communication with a remote computer system or resourcesuch as, for example, a communications platform. For a givenuser-initiated event, a corresponding user context can be defined byevent-context information. The event-context information can includetemporal data about the event such as, for example, information usableto identify a specific user or attributes thereof (i.e.,user-identification information), information related to a physicallocation of a user device or attributes thereof (i.e., user-locationinformation), information related to when a user-initiated eventoccurred (i.e., event-timing information), information usable toidentify a user device or attributes thereof (i.e., user-deviceidentification information), and/or the like.

In certain embodiments, a user-context-based analysis of user-initiatedevents can occur on demand responsive to requests from a user or system,automatically at certain scheduled times or intervals, etc. Inparticular, in some embodiments, a user-context-based analysis can beperformed in real-time as information becomes available in order tofacilitate dynamic implementation of DLP policies based, at least inpart, on user context. In addition, in various embodiments, user devicescan be enabled to configure the dynamic implementation based on userattestation of a risk or lack thereof. For illustrative purposes,examples will be described below relative to user-initiatedcommunication events, often referred to herein simply as communicationevents. It should be appreciated, however, that the principles describedcan similarly be applied to other types of user-initiated events or userbehaviors.

FIG. 17 illustrates an embodiment of a system 1700 foruser-context-based analysis of communications. The system 1700 includescommunications platforms 1776, a BIM system 1830, a cross-platform DLPsystem 146, and the user-context analytics system 180. As shown, thecommunications platforms 1776, the BIM system 1830, the cross-platformDLP system 146, and the user-context analytics system 180 are operableto communicate over a network 1805.

The communications platforms 1776, the BIM system 1830, and thecross-platform DLP system 146 can operate as described above withrespect to the BIM system 130, the cross-platform DLP system 146, andthe communications platforms 1176, respectively. In a typicalembodiment, the network 1805 can be representative of a plurality ofnetworks such as, for example, the intranet 104 and the network 106described above. In certain embodiments, the communications platforms1776, the BIM system 1830, and the user-context analytics system 180 cancollaborate to generate intelligence related to how user behaviordiffers based, at least in part, on user context.

More particularly, the communications platforms 1776 may be consideredspecific examples of one or more of the internal data sources 120 and/orone or more of the external data sources 122 described above. In thatway, in certain embodiments, the BIM system 1830 is operable to collectand/or generate, inter alia, information related to communications onthe communications platforms 1776. It should be appreciated that, inmany cases, such communications may be the result of communicationevents such as, for example, a user creating, drafting, receiving,viewing, opening, editing, transmitting, or otherwise accessing oracting upon the communications. For simplicity of description,information collected or generated by the BIM system 1830 with respectto the communications platforms 1776 may be referred to herein asevent-assessment data.

For example, the event-assessment data can include information relatedto a classification assigned to particular communications. As describedabove, communications can be assigned classifications, for example, bycomponents such as the a priori classification engine 226, the aposteriori classification engine 228, and the heuristics engine 230. Inan example, the event-assessment data can include content-basedclassifications such as classifications indicative of a particular topicor classifications based on whether a communication is conversational,formal, personal, work-related, sales-related, etc. By way of furtherexample, the event-assessment data can include participant-basedclassifications that are based on, for example, an email address ordomain of a communication participant, whether the communicationincludes customers as participants, whether the communication includesinternal participants, roles of the communication participants, etc.Additional examples of content-based and participant-basedclassifications are described in the '162 application. As still furtherexamples, the event-assessment data can include classifications based ona type of communication (e.g., email, instant message, voicemail, etc.),length of communication, and/or the like. Numerous other examples ofevent-assessment data will be apparent to one skilled in the art afterreviewing the present disclosure.

The user-context analytics system 180 can include a user-contextcorrelation engine 1782, a user-context analytics engine 1784, acontext-analytics access interface 1786, an active policy agent 1790,and a data store 1788. In certain embodiments, the user-contextcorrelation engine 1782 is operable to determine event-contextinformation for certain user-initiated communication events. In somecases, determining the event-context information can involve requestingand receiving, from the communications platforms 1776, user-log data.The user-log data can include, for example, stored information relatedto each user session, such as, for example, an IP address, a user'sclient application (e.g., a user's choice of web browser), network orsecurity settings of the user's device, other characteristics of theuser's device (e.g., manufacturer, model, operating system, etc.),combinations of the same, and/or the like. In a typical embodiment, theuser-context analytics system 180 can also correlate the event-contextinformation to one or more user contexts. In various embodiments,event-context information and/or correlated event-context informationcan be stored in the data store 1788. Example operation of theuser-context analytics system 180 will be described in greater detailwith respect to FIGS. 19-21.

In a typical embodiment, the user-context analytics engine 1784 usescorrelated event-context information as described above to associateuser-communication pattern(s) with user contexts. Eachuser-communication pattern typically characterizes activity that takesplace for a given user context. In an example, consider a particularuser context that aggregates all of a particular user's communicationevents that originate from a public location. The public location may beindicative, for example, of the user using publicly available networkaccess offered by a place of business (e.g., restaurant, hotel, etc.),governmental unit, and/or the like. According to this example, auser-communication pattern could indicate:

(1) A level of personal activity. In an example, personal activity canbe measured based, at least in part, on a number of communication eventsinvolving personal messages as described above. A given communicationpattern could indicate a number, percentage, statistical evaluation, orother analysis of the number or distribution of personal messages.

(2) Types of communication participants. In an example, a givencommunication pattern could indicate communication events involvingparticular communication-participant types such as: customerparticipants, internal participants, participants in certain businessunits (e.g., executive management, legal, etc.), participants havingcertain roles as indicated by directory services, and/or the like. Acommunication-participant type can also aggregate groups ofcommunication participants. For example, a “strategic” group couldaggregate communication participants in executive management andresearch and development. For each communication-participant type, agiven communication pattern could indicate a number, percentage,statistical evaluation, or other analysis of a number or distribution ofcommunications involving the communication-participant type.

(3) Content classifications. In an example, a given communicationpattern could indicate communication events involving communicationsthat involve certain topics (e.g., sales). In another example, a givencommunication pattern could indicate communication events involvingcommunications that are deemed conversational, formal, work-related,etc. For each content classification, a given communication patterncould indicate a number, percentage, statistical evaluation, or otheranalysis of a number of communications involving the contentclassification.

(4) Communication type. In an example, a given communication patterncould indicate communication events by communication type such as, forexample, email, instant message, document, voicemail, etc. For eachcommunication type, a given communication pattern could indicate anumber, percentage, statistical evaluation, or other analysis of anumber of communications involving the communication type.

It should be appreciated that the foregoing examples are merelyillustrative of information that can at least partially form the basisfor a communication pattern. Numerous other examples will be apparent toone skilled in the art after reviewing the present disclosure.

In certain embodiments, the user-context analytics engine 1784 cangenerate a communication profile based, at least in part, on acommunication pattern(s) for one or more user contexts. In certainembodiments, the communication profile can include comparativecommunication-pattern information related to a plurality of usercontexts. For example, one user context could be defined bycommunication events originating from a public location and a anotheruser context could be defined by communication events originating fromall other locations.

In certain embodiments, the comparative communication-patterninformation can include information summarizing or otherwise indicativeof communication patterns associated with each user context. In somecases, the communication profile can include a report (e.g., a chart orgraph) that facilitates a side-by-side comparison of the plurality ofuser contexts. In various embodiments, the communication profile canfurther indicate differences among the plurality of user contexts. Forexample, the communication profile could indicate differences in degree,number, and/or the like for each of personal activity, types ofcommunication participants, content classifications, and communicationtypes as described above. In various embodiments, differences can beindicated by sorting and ranking according to one or more representativemetrics, providing an evaluation of one or more representative metrics(e.g., indicating which is highest or lowest), etc. In general, therepresentative metric can relate to any number, percentage, statisticalevaluation, or other analysis generated as part of a given communicationpattern as described above.

The context-analytics access interface 1786 is operable to interact withusers of a client information handling system over a network such as,for example, an intranet, the Internet, etc. In a typical embodiment,the context-analytics access interface 1786 receives and servicescommunication-analytics requests from users. The context-analyticsaccess interface 1786 typically serves the communication-analyticsrequests via interaction with the user-context analytics engine 1784. Incertain embodiments, the context-analytics access interface 1786 cantrigger the operation of the user-context correlation engine 1782 andthe user-context analytics engine 1784 described above. Further examplesof operation of the context-analytics access interface 1786 will bedescribed in greater detail with respect to FIGS. 19-21.

The active policy agent 1790 is typically operable to facilitatereal-time user-context analysis and DLP implementation. In a typicalembodiment, the active policy agent 1790 can determine a user contextfor each user session with one of the communications platforms 1776.Based, at least in part, on the user context, the active policy agent1790 can select a dynamic DLP policy. In certain embodiments, thedynamic DLP policy can include a cross-platform DLP policy, which policycan be implemented by the cross-platform DLP system 146 as describedabove.

In addition to optionally including a cross-platform DLP policy, thedynamic DLP policy can specify one or more communication events ofinterest. In general, each user session is established between a userdevice and one or more of the communications platforms 1776. The activepolicy agent 1790 can monitor communication events originated by eachsuch user device for the communication events of interest. For example,the communication events of interest may include a user creating,drafting, receiving, viewing, opening, editing, transmitting, orotherwise accessing or acting upon a communication in a specifiedmanner.

If a communication underlying a particular communication event ofinterest meets risk-assessment criteria specified by the dynamic DLPpolicy, certain action can be taken. The risk-assessment criteria maytarget, for example, communications that involve particular types ofcommunication participants, that have particular contentclassifications, that are of particular communication types, and/or thelike. The actions that can be taken may include publishing a warning tothe user, alerting an administrator or other designated user, preventingfurther actions by the user, forcing user log off, etc. In addition, invarious embodiments, risk assessments of communication events ofinterest can be published to a real-time risk-evaluation dashboard thatis visible to the user.

In a particular example, the communication events of interest caninclude pre-transmission communication events. Pre-transmissioncommunication events can include the user drafting or editing acommunication that has not been sent. In various embodiments, draftcommunications are maintained in a designated folder or other locationthat is resident on or otherwise accessible to at least one of thecommunications platforms 1776. In various embodiments, the draftcommunications can be accessed and classified in similar fashion to anyother communication. Responsive to certain risk-assessment criteriabeing met as described above, transmission of such draft communicationscan be prevented. Further examples of operation of the active policyagent 1790 will be described below.

FIG. 18 presents a flowchart of an example of a process 1800 forperforming user-context-based analysis of communication events. Theprocess 1800 can be implemented by any system that can access data,evaluate data, and/or interact with users. For example, the process1800, in whole or in part, can be implemented by one or more of the BIMsystem 1830, the communications platforms 1776, the cross-platform DLPsystem 146, the user-context analytics system 180, the user-contextcorrelation engine 1782, the user-context analytics engine 1784, thecontext-analytics access interface 1786, the data store 1788, and/or theactive policy agent 1790. The process 1800 can also be performedgenerally by the system 1700. Although any number of systems, in wholeor in part, can implement the process 1800, to simplify discussion, theprocess 1800 will be described in relation to specific systems orsubsystems of the system 1700 and/or the user-context analytics system180. In various embodiments, the process 1800 can be initiated via acommunication-analytics request received via the context-analyticsaccess interface 1786. Such a request can be received from a userdevice, a computer system, or another entity.

At block 1802, the user-context correlation engine 1782 accessesevent-assessment data for a plurality of communication events. In somecases, the plurality of user-initiated communication events can includeall communication events of a given user (or set of users) over acertain period of time (e.g., a preceding one year, six months, etc.).It should be appreciated that the plurality of communication events mayrelate to different ones of the communications platforms 1776. In thatway, the plurality of user-initiated communication events may beconsidered cross-platform communication events. In various embodiments,the plurality of user-initiated communication events, or criteria foridentifying the plurality of user-initiated communication events, can bespecified in a communication-analytics request.

At block 1804, the user-context correlation engine 1782 determinesevent-context information for each of the plurality of communicationevents. The event-context information can include, for example,user-identification information, user-location information, event-timinginformation, user-device identification information, anomalous-eventinformation, and/or the like as described above.

In general, the user-identification information can be any informationusable to identify a user or some attribute of a user who is associatedwith a given communication event. User-identification information caninclude, for example, a user name, employee identifier, or other data.In many cases, the user-identification information may be determinedfrom the event-assessment data. In other cases, additionaluser-identification information may be retrieved from another systemsuch as, for example, one or more of the communications platforms 1776.For example, in some embodiments, if a user identifier is known, theuser identifier can be used to retrieve, from one or more of thecommunications platforms 1776, information about a corresponding user'srole or responsibilities in an organization (e.g., using directoryservices).

In general, the user-location information can be any information relatedto a physical location of the user device, or attributes thereof, at atime that a given communication event occurs. The given communicationevent is typically originated on one of the communications platforms1776 via a user device under control of a user. The user-locationinformation can include multiple levels of descriptive information.

In certain embodiments, at least a portion of the user-locationinformation can be determined by resolving an IP address associated withthe user to a physical location. The IP address can be accessed, forexample, from the event-assessment data and/or retrieved from aparticular one of the communications platforms 1776 on which the givencommunication event occurred. In some cases, the IP address can beobtained from user-log data as described above. In an example, the IPaddress can be resolved to a city, state, province, country, etc. Inaddition, in various embodiments, it can be determined directly from theIP address via what network provider the user device is accessing one ormore of the communications platforms 1776, whether the user device isinside or outside of a particular enterprise network, whether the userdevice is inside or outside of a particular city, state, province,country, etc.

In addition, or alternatively, the IP address may be looked up in an IPaddress registry to determine at least a portion of the user-locationinformation. The IP address registry can associate certainnetwork-location attributes (e.g., network addresses and network-addressranges) with a particular user's home, a public place of business (e.g.,network access at a coffee shop, mall, airport, etc.), and/or the like.In embodiments that utilize the IP address registry, the user-contextcorrelation engine 1782 can determine, as part of the event-contextinformation, whether the user device was in a public location (e.g.,coffee shop, mall, or airport), at the user's home, etc. at the time ofthe given communication event. In some embodiments, the IP addressregistry may be stored in the data store 1788 or in memory. In theseembodiments, users or administrators may register the network-locationattributes. In other embodiments, all or part of the IP address registrycan be provided by a third-party service provider.

In general, the user-device identification information can includeinformation descriptive of the user device, hardware or software of theuser device, and/or attributes thereof. For example, the user-deviceidentification information can include information related to a clientapplication on the user device that is used to access one or more of thecommunications platforms (e.g., a user's choice of web browser), networkor security settings of the user device or an application executingthereon, other characteristics of the user device (e.g., manufacturer,model, operating system, etc.), and/or the like. In many cases, some orall of the user-device identification information can be accessed fromthe event-assessment data. In other cases, at least a portion of theuser-device identification information can be retrieved from one or moreof the communications platforms 1776 (e.g., via user-log data asdescribed above).

The event-timing information can include, for each communication event,information descriptive of when the communication event occurred. Forexample, the event-timing information can include time classificationssuch as, for example, whether the communication event occurred in themorning, in the evening, on the weekend and/or the like as measured by acorresponding user's local time. The event-timing information can alsoindicate whether the communication event occurred during or outside ofthe user's working hours. In various embodiments, the event-timinginformation can be determined from a timestamp for the communicationevent. The timestamp can be obtained, for example, from theevent-assessment data or retrieved from another system such as one ofthe communications platforms 1776.

The anomalous-event information can indicate, for each communicationevent, whether the communication event is deemed anomalous. In a typicalembodiment, the communication event may be considered anomalous if it isdetermined to be of questionable authenticity. For example, thecommunication event may be considered anomalous if another communicationevent occurred within a certain period of time (e.g., 30 minutes) ofthat communication event and is deemed to involve a same user (e.g.,using the same user credentials), on a different user device, in asufficiently distant physical location (e.g., two-hundred kilometersaway as determined via IP address). In various embodiments, whatconstitutes a sufficiently distant physical location can be variedaccording to a period of time separating two communication events (e.g.,allowing for a distance of no greater than one kilometer per minuteelapsed). In various embodiments, the anomalous-event information can bedetermined from other event-context information. For example, theuser-context correlation engine 1782 can aggregately analyze a locationand timing of all of the plurality of communication events. Based, atleast in part, on the analysis, the user-context correlation engine 1782can identify anomalous communication events as described above.

At block 1806, the user-context correlation engine 1782 correlates theevent-assessment data to one or more user contexts. In some cases, theone or more user contexts can be specified in a communication-analyticsrequest as described above. In a typical embodiment, each user contextis defined by a distinct subset of the event-context information. In atypical embodiment, the user-context correlation engine 1782 correlatesthe event-assessment data to user contexts on an event-by-event basis.That is, the event-assessment data for a given communication event iscorrelated to a given user context if the communication satisfies eachconstraint of the user context. For example, if a particular usercontext is directed to communication events occurring during non-workinghours and at public locations, the event-assessment data for aparticular communication event would be correlated to the particularuser context only if the particular communication event is deemed tohave occurred during non-working hours (relative to the local time of acorresponding user) and in a public location.

Each user context can include any combination of event-contextinformation described above. For example, user-context constraints canbe defined in terms of user-identification information, event-timinginformation, user-device identification information, user-locationinformation, anomalous-event information, and/or other information. Inthe case of event-timing information, a given user context may specifyone or more recurring periods of time such as, for example, time periodsdeemed working hours, non-working hours, etc. In addition, in someembodiments, each user context may specify a static non-overlappingperiod of time for a particular user (e.g., 2010-2012 for a first usercontext and 2013-present for a second user context). In theseembodiments, the non-overlapping periods of time can enable measurementof communication-pattern evolution of users over time.

In some cases, each user context can be mutually exclusive of each otheruser context. In an example, one user context could be directed tocommunication events deemed to occur in a public location while anotheruser context could be directed to communication events deemed to occurin all other locations. In another example, one user context could bedirected to communication events deemed to occur during working hourswhile another user context could be directed to communication eventsdeemed to occur during non-working hours. It should be appreciated,however, that each user context need not be mutually exclusive otheruser contexts. For example, one user context could be directed tocommunication events occurring during non-working hours, another usercontext could be directed to communication events occurring duringworking hours, and yet another user context could be directed tocommunication events originating from a user's home.

At block 1808, the user-context correlation engine 1782 associates oneor more communication patterns with each of the one or more usercontexts. In general, each communication pattern can include any of thecommunication-pattern information described above with respect to FIG.17. At block 1810, the user-context correlation engine 1782 generates acommunication profile for at least one user. In various embodiments, theblock 1810 can include generating a communication profile for each userresponsible for one of the plurality of user-initiated communicationevents. In general, each communication profile can include any of theinformation (e.g., comparative communication-pattern information)described above with respect to FIG. 17.

At block 1812, the user-context correlation engine 1782 performs actionsbased on the one or more communication profiles. In some embodiments,the block 1812 can include publishing the one or more communicationprofiles (e.g., in the form of reports) to an administrator or otherdesignated user. In additional embodiments, the block 1812 can includeperforming an automated risk evaluation of comparativecommunication-pattern information contained in the one or morecommunication profiles. In various embodiments, the automated riskevaluation may use risk-assessment criteria to target certaincommunication profiles deemed dangerous. In various cases, therisk-assessment criteria can be maintained in the data store 1788 or inmemory.

For example, the risk-assessment criteria may target communicationevents that involve communications to customers and are originated froma public location. The risk-assessment criteria can specify, forexample, a threshold number of communication events. Responsive to thecomparative communication-pattern information for a particularcommunication profile meeting the risk-assessment criteria, an alert canbe transmitted to a designated user. Other examples of risk-assessmentcriteria and of automated risk evaluation will be apparent to oneskilled in the art after reviewing the present disclosure.

At block 1814, resultant data is stored in the data store 1788 or inmemory. The resultant data can include, for example, the accessedevent-assessment data, the determined event-context information, thecorrelated event-assessment data, information related touser-communication patterns, the one or more communication profiles,and/or other data.

FIG. 19 presents a flowchart of an example of a process 1900 forperforming dynamic DLP via a real-time user-context-based analysis. Theprocess 1900 can be implemented by any system that can access data,evaluate data, and/or interact with users. For example, the process1900, in whole or in part, can be implemented by one or more of the BIMsystem 1830, the communications platforms 1776, the cross-platform DLPsystem 146, the user-context analytics system 180, the user-contextcorrelation engine 1782, the user-context analytics engine 1784, thecontext-analytics access interface 1786, the data store 1788, and/or theactive policy agent 1790. The process 1900 can also be performedgenerally by the system 1700. Although any number of systems, in wholeor in part, can implement the process 1900, to simplify discussion, theprocess 1900 will be described in relation to specific systems orsubsystems of the system 1700 and/or the user-context analytics system180.

At block 1902, the active policy agent 1790 determines a current usercontext of at least one user device currently accessing one of thecommunications platforms 1776. In general, the current user context caninclude any combination of information described above relative toevent-context information.

At block 1904, the active policy agent 1790 selects a dynamic DLP policybased on the user context. In a typical embodiment, the dynamic DLPpolicy may include a cross-platform DLP policy that is implemented asdescribed above. In addition, the dynamic DLP policy may include DLPrisk-assessment criteria. In certain embodiments, the DLPrisk-assessment criteria are used to assess a riskiness of communicationevents. If, for example, the user context indicates that the at leastone user device is currently inside a given corporate firewall, the DLPrisk-assessment criteria may be relaxed or nonexistent. Conversely, if,for example, the user context indicates that the at least one userdevice is in a public location, the DLP risk-assessment criteria may bemore stringent.

More particularly, in a typical embodiment, the DLP risk-assessmentcriteria specifies one or more rules for determining whether a givencommunication event is deemed risky. In certain embodiments, therisk-assessment criteria can be based, at least in part, oncontent-based classifications of communications associated withcommunications event of interest. For example, in certain embodiments,communications related to a topic of sales may be deemed risky if theuser context indicates that the at least one user device is in a publiclocation. According to this example, communications related to the topicof sales could be specified as risky in the risk-assessment criteria. Incontrast, communications related to the topic of sales may not be deemedrisky if, for example, the at least one user device is determined to beat a corresponding user's home. According to this alternative example,the risk-assessment criteria may not specifically identify the topic ofsales. The risk-assessment criteria can also specify other criteria suchas, for example, particular communication-participant types. Otherexamples will be apparent to one skilled in the art after reviewing thepresent disclosure.

At block 1906, the active policy agent 1790 monitors communicationevents originated by the at least one user device. Advantageously, incertain embodiments, the block 1906 can include monitoringpre-transmission communication events as described above relative toFIG. 17. At decision block 1908, the active policy agent 1790 determineswhether a communication event of interest has occurred. If not, theprocess 1900 returns to block 1906 and proceeds as described above.Otherwise, if it is determined at the decision block 1908 that acommunication event of interest has occurred, the process 1900 proceedsto block 1910.

At block 1910, the active policy agent 1790 evaluates the communicationevent of interest according to the DLP risk-assessment criteria. Atdecision block 1912, the active policy agent 1790 determines whether theDLP risk-assessment criteria is met. If not, the process 1900 returns toblock 1906 and proceeds as described above. Otherwise, if the activepolicy agent 1790 determines at the decision block 1912 that the DLPrisk-assessment criteria is met, the process 1900 proceeds to block1914. At block 1914, the active policy agent 1790 takes action specifiedby the dynamic DLP policy. For example, in the case of pre-transmissioncommunication events, the active policy agent 1790 may preventtransmission of a communication in the fashion described above. By wayof further example, the action taken can also include publishing awarning to the user, alerting an administrator or other designated user,preventing further actions by the user, forcing user log off, etc.

At block 1916, the active policy agent 1790 publishes a risk assessmentto a real-time risk-evaluation dashboard on the at least one userdevice. In various embodiments, the risk assessment can indicate whetherthe communication event of interest is deemed risky, not risky, etc. Insome cases, the risk assessment can be a scaled metric indicating adegree to which the communication event of interest is deemed risky. Invarious embodiments, the block 1916 can be omitted such that no riskassessment is published. From block 1916, the process 1900 returns toblock 1906 and proceeds as described above. The process 1900 cancontinue indefinitely (e.g., until terminated by rule or by anadministrator or other user).

FIG. 20 presents a flowchart of an example of a process 2000 forconfiguring a dynamic DLP policy and/or a user context responsive touser input. The process 2000 can be implemented by any system that canaccess data, evaluate data, and/or interact with users. For example, theprocess 2000, in whole or in part, can be implemented by one or more ofthe BIM system 1830, the communications platforms 1776, thecross-platform DLP system 146, the user-context analytics system 180,the user-context correlation engine 1782, the user-context analyticsengine 1784, the context-analytics access interface 1786, the data store1788, and/or the active policy agent 1790. The process 2000 can also beperformed generally by the system 1700. Although any number of systems,in whole or in part, can implement the process 2000, to simplifydiscussion, the process 2000 will be described in relation to specificsystems or subsystems of the system 1700 and/or the user-contextanalytics system 180.

At block 2002, the active policy agent 1790 provides an attestationinterface to at least one user device. In a typical embodiment, theattestation interface may be provided on, or be accessible from, areal-time risk-evaluation dashboard as described with respect to FIG. 17and with respect to block 1916 of FIG. 19. In general, the real-timerisk-evaluation dashboard may indicate a determined user context of theat least one user. In addition, as described above, the real-timerisk-evaluation dashboard may indicate risk assessments provided by theactive policy agent 1790. In many cases, as described above relative toFIG. 19, the active policy agent 1790 may have already taken actionbased on the risk assessments and the determined user context.

In certain embodiments, the attestation interface can allow the user toprovide attestation input that modifies how the active policy agent 1790reacts to communication events of interest. In an example, anattestation input can allow the user to indicate that the determineduser context is incorrect in determining the at least one user device tobe in a public location. In another example, an attestation input canallow the user to indicate that a determined assessment of “risky” or“not risky” for a communication event of interest is incorrect.

At block 2004, the active policy agent 1790 monitors for attestationinputs. At decision block 2006, the active policy agent 1790 determineswhether an attestation input has been received from the at least oneuser device. If not, the process 2000 returns to block 2004 and proceedsas described above. Otherwise, if it is determined at the decision block2006 that an attestation input has been received, the process 2000proceeds to block 2008.

At block 2008, the active policy agent 1790 adjusts at least one of theuser context and the dynamic DLP policy responsive to the attestationinput. In typical embodiment, the attestation input serves as a usercertification, for example, that the determined user context isincorrect or that a communication event of interest has beeninaccurately assessed as risky. For example, if the at least one userdevice is at the user's home and not in public location as suggested bythe determined user context, the attestation input may so indicate andthe active policy agent 1790 can modify the user context accordingly. Byway of further example, if the attestation input indicates that aspecific communication event of interest is incorrectly assessed as“risky,” the active policy agent 1790 can modify the dynamic DLP policyto allow the communication event of interest (e.g., by adjusting atrigger threshold). In some cases, allowing the communication event ofinterest can involve performing an action that was previously prevented(e.g., transmitting a communication).

At block 2010, the active policy agent 1790 records the user attestationinput in the data store 1788 or in memory. In various embodiments, therecordation can facilitate auditing of user attestations byadministrators or other users. In some cases, all user attestations maybe provided immediately to an administrator or designated user as analert. In other cases, all user attestations can be provided in periodicreports and/or in an on-demand fashion. From block 2010, the process2000 returns to block 2004 and proceeds as described above. The process2000 can continue indefinitely (e.g., until terminated by rule or by anadministrator or other user).

V. Example Operation of a Subject-Matter-Affiliation System

FIG. 21 illustrates an example of the SMA system 194. In a typicalembodiment, the SMA system 194 can include functionality and componentsdescribed with respect to the BIM system 130 of FIGS. 1 and 2. Moreparticularly, however, the SMA system 194 is configured to identify useraffiliations with particular topics. The SMA system 194 can include aSMA access system 2136, a data collection system 2132, and a SMAclassification system 2134.

The data collection system 2132 can have any of the functionalitydescribed with respect to the data collection system 132 of FIGS. 1-2.In some implementations, the data collection system 2132 can in fact bethe data collection system 132 of the BIM system 130, such that the datacollection system 2132 is only logically included in the SMA system 194.As previously described, the data collection system 2132 can beconfigured to, among other things, collect data from internal datasources 120 and/or external data sources 122. The data collected by thedata collection system 2132 can include communications such as, forexample, email messages, social-media messages, comments, blog posts,presentations, documents, and/or other data.

The data collected by the data collection system 2132 can also include,for example, a set of users. The set of users typically includesindividuals who are accessible to the SMA system 194 for potential SMAdeterminations. For example, in some embodiments, the set of users caninclude all employees of the organization. In these embodiments, the setof users can be acquired, for example, from the internal data sources120 (e.g., the organization's human-resources system, directory servicessuch as Active Directory, etc.). Additionally, or alternatively, incertain embodiments, the set of users can also be individuals who areparticipants with respect to the communications described above (e.g.,sender, recipient, author, etc.).

The data collected by the data collection system 2132 can also include,for example, a global set of topics. In a typical embodiment, the globalset of topics can be considered a taxonomy that is usable to classifysubjects (i.e. topics) of interest. In some embodiments, each topic canbe characterized by one or more words or phrases. For example, incertain embodiments, the set of topics can take on a list structure suchthat each topic in the list includes the one or more words or phrasesthat characterize the topic. In certain other embodiments, the set oftopics can be represented using a more complex structure such as, forexample, a tree or hierarchy. In these embodiments, narrower topics canbe represented as child nodes of parent nodes that are representative ofbroader topics. In some embodiments, the set of topics can be compiledby ingesting organizational content such as, for example, a web site,white papers, document or content management systems, etc. The set oftopics can also be compiled from pre-existing industry taxonomies (e.g.,healthcare, oil-and-gas, and finance industries). The set of topics canalso be compiled manually, for example, by domain experts,administrators, or developers.

After the data collection system 2132 has collected and, in some cases,processed the data, the data may be provided to the SMA classificationsystem 2134 for further processing and storage. The SMA classificationsystem 2134 can include a data repository engine 2122, a task scheduler2124, an a priori classification engine 2126, an a posterioriclassification engine 2128, a heuristics engine 2148, a roleclassification engine 2146, and a set of databases 2133. In general, thedata repository engine 2122 and the set of databases 2133 can operate asdescribed with respect to the data repository engine 222 and the set ofdatabases 232, respectively, of FIG. 2.

In a typical embodiment, the set of topics, the set of users, and thecommunications can be supplied as SMA inputs to the task scheduler 2124.The task scheduler 2124 can supply the SMA inputs to the a prioriclassification engine 2126. In a typical embodiment, the a prioriclassification engine 2126 includes configurations and functionalitydescribed with respect to the a priori classification engine 226 of FIG.2 along with additional configurations and functionality that arespecific to the SMA system 194. For example, for each user in the set ofusers, the a priori classification engine 2126 can compute one or moretopical metrics. For a given topic and user, each topical metric istypically a measurement of the user's affiliation with the topic. In atypical embodiment, the determination of the topical metric is based, atleast in part, on the content of the communications in which the userhas participated. Example operation of the a priori classificationengine 2126 will be described with respect to FIG. 22.

In addition to the a priori classification engine 2126, the taskscheduler 2124 can provide the SMA inputs, along with additional datagenerated by the a priori classification engine 2126, to the aposteriori classification engine 2128. In a typical embodiment, the aposteriori classification engine 2128 includes configurations andfunctionality described with respect to the a posteriori classificationengine 228 of FIG. 2 along with additional configurations andfunctionality that are specific to the SMA system 194. For example, thea posteriori classification engine 2128 can analyze and examine timingand data attributes of the communications to determine, for example,each user's scope of affiliation and an affiliation timeline. Exampleoperation of the a posteriori classification engine 2128 will bedescribed with respect to FIG. 22.

In certain embodiments, the a posteriori classification engine 2128 canalso be used to identify redundancies within the set of users. Forexample, separate users may be detected based on the individual'sinclusion in the organization's human-resources system, the individual'ssocial-networking account (e.g., Twitter), multiple email addresses forthe individual, etc. In a typical embodiment, users that refer to a sameindividual can be identified and merged based on probabilistic analysesof similarity indicators such as, for example, overlapping names,conversations relating to overlapping topics from the set of topics,conversations involving an overlapping set of participants,communications originating from a same IP address range, and/or othersimilar data and metadata.

In a typical embodiment, multiple similarity indicators can be combinedto create one or more Boolean rules regarding whether to mergeidentities of users. For example, if two users have overlapping names(e.g., within an edit-distance threshold) and the two users'conversation topics sufficiently overlap (e.g., one user's topicsseventy-five percent overlaps the other user's set of topics), theidentities of the two users could be merged. Merging typically involvescombining, for example, identification information, contact information,any applicable topical, affiliation-scope, and timeline metrics, etc. Inaddition, merging typically results in communications, conversations,and other collected data for the merged users being associated with asingle identity.

In various embodiments, merging users as described above can result in agiven individual (i.e. user) being recognized as having an affiliationwith topics that might otherwise be undiscoverable. For example, if thegiven user has a social-networking account associated with a non-workpersona, it may be discovered, after merging, that the given user has asubject-matter affiliation with real estate, particular sports (e.g.,lacrosse, rugby, softball), particular places (e.g., Taiwan, Argentina,Morocco), particular television shows or movies (e.g., Star Wars), videogaming, and/or the like. Such affiliation identification could beuseful, for example, when a project requires non-traditional expertise,when determining who to invite to a dinner with an investor who is arugby enthusiast, etc.

In certain embodiments, the a priori classification engine 2126 and/orthe a posteriori classification engine 2128 can use the heuristicsengine 2148 to facilitate operation thereof. In a typical embodiment,the heuristics engine 2148 includes configurations and functionalitydescribed with respect to the heuristics engine 230 of FIG. 2 along withadditional configurations and functionality that are specific to the SMAsystem 194.

In a typical embodiment, the role classification engine 2146 receives,optionally via the task scheduler 2124, outputs of the a prioriclassification engine 2126 and the a posteriori classification engine2128. The role classification engine 2146 is typically operable togenerate multidimensional SMA data for each topic and user. Themultidimensional SMA data can include, for example, a topical dimension,a scope dimension, and a timeline dimension. The topical dimensiongenerally includes data indicative of an extent to which the user hasbeen deemed to have an affiliation with the topic. For example, thetopical dimension can include an affiliation index via which the user'saffiliation can be measured and ranked against that of other users.

The scope dimension generally includes data indicative of a scope of theuser's subject-matter affiliation with a particular topic. For example,although the topical dimension may indicate a particular subject-matteraffiliation via the affiliation index, the scope dimension can includean assigned role for that subject-matter affiliation. For example, theassigned role can be that of evangelist, knowledge creator, knowledgemanager, etc. The timeline dimension generally includes data indicativeof a recency and/or depth of the user's subject-matter affiliation withthe topic. For example, the timeline dimension can include a timelineclassification such as, for example, long-time affiliate, deep-domainaffiliate, cutting-edge affiliate, and strategic affiliate. Examples ofthe topical dimension, the scope dimension, and the timeline dimensionwill be described in greater detail with respect to FIG. 22.

Users can communicate with the SMA system 194 using a client computingsystem (e.g., client 114, client 116, or client 118). In a typicalembodiment, at least some users can access the SMA system 194 using theSMA access system 2136. The SMA access system 2136 can include, forexample, configurations and functionality described with respect to theBIM access system 136.

In addition, in some embodiments, the SMA access system 2136 can permitauthorized users (e.g., administrators, super users, or other users) tomanually change SMA classifications generated, for example, by the roleclassification engine 2146. In similar fashion, the authorized usercould manually designate subject-matter affiliations that were missed bythe role classification engine 2146, manually add, remove, or reviseaffiliation-scope classifications assigned by the role classificationengine 2146, manually add, remove, or revise timeline classificationsassigned by the role classification engine 2146, etc.

FIG. 22 presents a flowchart of an example of a process 2200 forclassifying users as having a subject-matter affiliation with particulartopics. The process 2200 can be implemented by any system that canclassify data and/or metadata. For example, the process 2200, in wholeor in part, can be implemented by the a priori classification engine2126, the a posteriori classification engine 2128, the heuristics engine2148 and/or the role classification engine 2146. In some cases, theprocess 2200 can be performed generally by the SMA classification system2134 or the SMA system 194. Although any number of systems, in whole orin part, can implement the process 2200, to simplify discussion, theprocess 2200 will be described in relation to specific systems orsubsystems of the SMA system 194.

At block 2202, the a priori classification engine 2126 receives aselection of a set of topics and a set of users. The set of topics canbe selected, for example, responsive to configuration or election by anadministrator, developer, super user, or other user. The set of topicscan be also be received, for example, from the self-service accessbroker 196 as described with respect to FIGS. 24-28. In some cases, theset of topics can include only one topic and the set of users caninclude only one user.

In various embodiments, the set of topics can be a taxonomy that iscreated automatically, for example, by ingesting all or part of anorganization's stored content. The set of topics can also be establishedmanually. In a typical embodiment, each topic in the set of topics ischaracterized by one or more words or phrases. For example, a giventopic could be characterized by a name (or partial name) of a product ortechnology. Topics can be general (e.g., “databases”) or specific (e.g.,“Hadoop”). In similar fashion to the set of topics, the set of users canbe selected, for example, responsive to configuration or election by anadministrator, developer, super user, or other user. As described above,the set of users can include all or a subset of individuals who areaccessible to the SMA system 194 for potential SMA classifications.

At block 2204, for each user in the set of users, the a prioriclassification engine 2126 identifies conversations in which the userhas participated. The conversations are typically identified as distinctcommunication threads within the collected communications. For example,in a typical embodiment, an original message and each successiveresponse to that original message would be considered part of a sameconversation.

At block 2206, for each topic and user, the a priori classificationengine 2126 measures a proportion of the identified conversations thatcontain content suggestive of the topic (i.e., the user's topic-relevantconversations). In certain embodiments, the measurement yields one ormore topical metrics that express, at least in part, a frequency orprevalence of the user's topic-relevant conversations. The one or moretopical metrics can include, for example, a cardinality of the user'sset of topic-relevant conversations, a decimal or percentage value ofall of the user's conversations that the topic-relevant conversationsrepresent, etc. The one or more topical metrics can also includestatistical values such as, for example, a number of standard deviationsthat separate the cardinality from a mean value (e.g., a mean valuebased on a set of verified test data, a mean value across all users,etc.).

At block 2208, for each topic and user, the a posteriori classificationengine 2128 analyzes a timing of the user's topic-relevantconversations. In a typical embodiment, the analysis results in one ormore timeline metrics that indicate, at least in part, when the userfirst exhibited a subject-matter affiliation with the topic. Forexample, the one or more timeline metrics can include a date of a firsttopic-relevant conversation, a date of a most recent topic-relevantconversation, a number of topic-relevant conversations within certainperiods of time (e.g., within the last month, within each month betweenthe first date and the most recent date, etc.), a statisticaldistribution over time of conversations concerning the topic, etc.

At block 2210, for each topic and user, the a posteriori classificationengine 2128 examines relationships among data attributes of thetopic-relevant conversations. The data attributes that are examined caninclude, for example, who sent and received each communication of atopic-relevant conversation, who authored a document (e.g., that isattached to a communication or that itself is a communication), whoinitiated a topic-relevant conversation, who brought others into atopic-relevant conversation (e.g., by forwarding), etc. The examinationtypically yields one or more affiliation-scope metrics that are usable,at least in part, to suggest a role for the user's subject-matteraffiliation. The one or more affiliation-scope metrics can include, forexample, a number of topic-relevant conversations that the useroriginated, a number of topic-relevant conversations authored by theuser (e.g., documents, presentations, etc.), a number of individualsthat the user brought into topic-relevant conversations (e.g., bysending or forwarding), an average length of communications originatedby the user (e.g., measured in characters, words, sentences, etc.),and/or the like.

At block 2212, for each topic and user, the role classification engine2146 generates multidimensional SMA data. In a typical embodiment, themultidimensional SMA data includes a topical dimension, anaffiliation-scope dimension, and a timeline dimension. In variousembodiments, the topical dimension, the affiliation-scope dimension, andthe timeline dimension can be generated, at least in part, based on theone or more topical metrics, the one or more affiliation-scope metrics,and the one or more timeline metrics, respectively. The multidimensionalSMA data can include, for example, an affiliation index via which theuser's SMA can be measured and ranked against that of other users. Incertain embodiments, the affiliation index can be part of the topicaldimension. The affiliation-scope data can be, for example, a record. Anexample of generating the multidimensional SMA data will be describedwith respect to FIG. 23.

At block 2214, for each topic and user, the data repository engine 2122can store the multidimensional SMA data, for example, in one or more ofthe databases 2133 and/or provide all or part of the multidimensionalSMA data to a requestor thereof (e.g., the self-service access broker196).

FIG. 23 presents a flowchart of an example of a process 2300 forgenerating multidimensional SMA data for a given topic and user. Invarious embodiments, the process 2300 may be performed, for example, asall or part of the block 1214 of FIG. 12. The process 2300 can beimplemented by any system that can classify data and/or metadata. Forexample, the process 2300, in whole or in part, can be implemented bythe a priori classification engine 2126, the a posteriori classificationengine 2128, the heuristics engine 2148, and/or the role classificationengine 2146. In some cases, the process 2300 can be performed generallyby the SMA classification system 2134 or the SMA system 194. Althoughany number of systems, in whole or in part, can implement the process2300, to simplify discussion, the process 2300 will be described inrelation to specific systems or subsystems of the SMA system 194.

At block 2302, the role classification engine 2146 assesses the user'ssubject-matter affiliation with the topic. The role classificationengine 2146 can utilize, for example, the one or more topical metricsgenerated at the block 2206 of FIG. 22. The assessment typicallyinvolves determining an affiliation index for the user relative to thetopic. In certain embodiments, the affiliation index can be one of theone or more topical metrics. For example, in some embodiments, theaffiliation index can be a cardinality of the user's set oftopic-relevant conversations. In still other embodiments, theaffiliation index can be a normalized value. For example, theaffiliation index could be determined by dividing the cardinality of theuser's set of topic-relevant conversations by the highest suchcardinality across all users.

At block 2304, the role classification engine 2146 discovers a scope ofthe user's subject-matter affiliation. The discovery can utilize, forexample, the one or more affiliation-scope metrics generated at theblock 2210 of FIG. 22. In addition, or alternatively, the roleclassification engine 2146 can utilize pre-existing user-classificationdata such as, for example, job titles and employee classifications. Thepre-existing user-classification data can be collected, for example,from an organization's human resources system, directory services (e.g.Active Directory), and/or the like.

In a typical embodiment, the discovery at the block 2304 includesassigning at least one affiliation-scope classification to the user. Forexample, in certain embodiments, the role classification engine 2146 isoperable to assign one or more of a plurality of affiliation-scopeclassifications that are each associated with specific criteria. If theuser meets the specific criteria, the role classification engine 2146can assign the affiliation-scope classification. For example, in someembodiments, the one or more affiliation-scope classifications that therole classification engine 2146 is operable to assign can include rolesof evangelist, knowledge manager, knowledge creator, and influencee.

The specific criteria for the evangelist role is typically associatedwith metrics (e.g., the one or more affiliation-scope metrics) that areindicative of the user's actions to promote the topic and inspire othersto join the topic. For example, the specific criteria for the evangelistrole could establish a threshold for a number of other individuals(e.g., other users) whom the user brought into a topic-relevantconversation (e.g., by forwarding, originating a new message, etc.). Thethreshold could be expressed in terms of a raw number, a normalizedvalue, etc. In some embodiments, the specific criteria can furtherspecify that the user have a certain title or user classification withinthe organization (e.g., manager, vice president, etc.). As describedabove, the title or user classification can be obtained from theorganization's human-resources system, directory services (e.g., ActiveDirectory), and/or the like.

The specific criteria for the knowledge creator role is typicallyassociated with metrics (e.g., the one or more affiliation-scopemetrics) that are indicative of the user's actions to create knowledgerelated to the topic. For example, the specific criteria for theknowledge creator role could establish thresholds for a number ofconversations originated by the user, a number of documents or othercommunications authored by the user (e.g., as identified via authormetadata of presentations, documents, etc.), an average length ofcommunications created by the user (e.g., expressed in characters,words, sentences), and/or the like. As described above, the thresholdscould be expressed in terms of a raw number, a normalized value, etc. Insome embodiments, the specific criteria can further specify that theuser have a certain title or user classification within the organization(e.g., manager, vice president, etc.).

The specific criteria for the knowledge manager role is typicallyassociated with metrics (e.g., the one or more affiliation-scopemetrics) that are indicative of the user's actions to manage or controlknowledge related to the topic. For example, the specific criteria forthe knowledge manager role could include a threshold for a number oftopic-relevant conversations in which the user has participated and arequirement that the knowledge manager be a supervisor for a definednumber of knowledge creators and/or evangelists. The threshold could beexpressed in terms of a raw number, a normalized value, etc. A user canbe identified as a supervisor using, for example, the organization'shuman resource's system, directory services (e.g., Active Directory),and/or the like.

The specific criteria for the influencee role is typically associatedwith metrics (e.g., the one or more affiliation-scope metrics) that areindicative of the user being influenced on the topic by other users. Forexample, the specific criteria for the influencee role could include athreshold for a number of topic-relevant conversations in which the userhas participated and specify that the user not be a knowledge creator,knowledge manager, or evangelist (or that the user not meet certaincriteria thereof). The specific criteria could also require, forexample, that the user has originated or created at least a minimumnumber of communications (e.g., raw value, statistical value, ornormalized value).

At block 2306, the role classification engine 2146 ascertains a timelineof the user's subject-matter affiliation. The block 2306 can utilize,for example, the one or more timeline metrics generated at the block2208 of FIG. 22. In addition, as discussed with respect to the block2304, the role classification engine 2146 can utilize pre-existinguser-classification data such as, for example, job titles and employeeclassifications. In a typical embodiment, the block 2306 includesassigning at least one timeline classification to the user.

For example, in certain embodiments, the role classification engine 2146is operable to assign one or more of a plurality of timelineclassifications that are each associated with specific criteria. If theuser meets the specific criteria, the role classification engine 2146can assign the timeline classification. For example, in someembodiments, the one or more timeline classifications that the roleclassification engine 2146 is operable to assign can include roles oflong-time affiliate, deep-domain affiliate, cutting-edge affiliate, andstrategic affiliate. In similar fashion to the plurality ofaffiliation-scope classifications, the specific criteria for each of theplurality of timeline classifications are typically associated withmetrics (e.g., the one or more timeline metrics) that are indicative ofthe respective role.

For example, the specific criteria for the role of long-time affiliatecould require that the user's topic-relevant conversations begin priorto a certain date, that a certain number, percentage, or statisticaldistribution of the user's topic-relevant conversations occur prior to acertain date, etc. In some embodiments, the role of long-time affiliatecan be determined relative to other users in the set of users so that,for example, the certain date need not be determined or can bedynamically established based on a statistical analysis of the set ofusers and the timing of their topic-relevant conversations.

The role of deep-domain affiliate is typically used for users whoexhibit a continuous subject-matter affiliation with a given topic overtime. For example, the specific criteria for the role of deep-domainaffiliate could require that the user have at least a minimum number oftopic-relevant conversations within each of a plurality of periods oftime. In some embodiments, the role of deep-domain affiliate can beestablished relative to other users in the set of users so that, forexample, the minimum number of topic-relevant conversations can bedynamically established based on a statistical analysis of the set ofusers and the timing of their topic-relevant conversations.

The role of cutting-edge affiliate is typically used for users whoexhibit extensive recent subject-matter affiliation. For example, thespecific criteria for the role of cutting-edge affiliate could requirethat the user have at least a minimum number of topic-relevantconversations within a certain recent period of time (e.g., last month,last year, etc.). In some embodiments, the role of cutting-edgeaffiliate can be established relative to other users in the set of usersso that, for example, the minimum number of topic-relevant conversationscan be dynamically established based on a statistical analysis of theset of users and the timing of their topic-relevant conversations.

The role of strategic affiliate is typically used for users who hold aposition of preeminence in the organization. For example, the specificcriteria for the role of strategic affiliate could require that the userhave at least a minimum number of topic-relevant conversations within acertain recent period of time (e.g., last month, last year, etc.) alongwith having a certain position within the organization (e.g., manager,vice president, etc.). The user's position within the organization canbe determined using, for example, the organization's human resourcesand/or directory services as described above. In some embodiments, therole of strategic affiliate can be established relative to other usersin the set of users so that, for example, the minimum number oftopic-relevant conversations and/or the required position can bedynamically established based on a statistical analysis of the set ofusers and the timing of their topic-relevant conversations.

VI. Example Operation of a Self-Service Access Broker

FIG. 24 illustrates an embodiment of a system 2400 for self-serviceaccess to content. The system 2400 includes the self-service accessbroker 196 of FIG. 1, the BIM system 130 of FIG. 1, and contentplatforms 2476. In general, the content platforms 2476 can include, forexample, systems that allow publishing, editing, modifying, and/ormaintaining of content. As illustrated, the content platforms 2476 canstore or maintain content 2411.

The content platforms 2476, in general, are representative of at least aportion of the internal data sources 120 and the external data sources122 as illustrated in FIG. 1. For ease of illustration and description,those of the internal data sources 120 and the external data sources 122that can serve as a content platform are shown collectively as thecontent platforms 2476. In a typical embodiment, each item of content inthe content 2411 can have one or more controlling users. In addition tohaving its ordinary meaning, a controlling user can refer to a user (orusers) who is primarily responsible for granting or denying requests toaccess particular content of the content 2411 (e.g., a content owner).In some embodiments, the self-service access broker 196 can, in effect,serve as the content platforms 2476. In these embodiments, theself-service access broker 196 can directly manage and/or maintain thecontent 2411. Some embodiments can also implement a combination of theforegoing.

In the illustrated embodiment, the self-service access broker 196includes a controlling-user configuration module 2498, a trustdetermination module 2401, a need-to-know determination module, anaccess request module 2405, and an administration module 2407. Thecontrolling-user configuration module 2498 can be a hardware and/orsoftware module operable to interact with controlling users of thecontent 2411. For example, the controlling-user configuration module2498 can be used to establish self-service access policies forparticular content of the content 2411. In general, a self-serviceaccess policy can be a policy for automatically granting or denying userrequests to access particular content (e.g., a document, file, site,communication, presentation, etc.). Self-service access policiesestablished via the controlling-user configuration module 2498 can bestored in a policies repository 2409. In addition, in certainembodiments, the controlling-user configuration module 2498 can be used,by controlling users, to reverse policy-based access decisions of theself-service access broker 196, for example, by granting access to userswho were automatically denied access, revoking access to users who wereautomatically granted access, etc.

The trust determination module 2401 can be a hardware and/or softwaremodule operable to determine trust measures of users. Each trust measurecan be an indication of a trustworthiness of users, for example, as aresult of analyzing logged behavior of users on communications platformssuch as the communications platforms 1176 of FIG. 11, the communicationsplatforms 1776 of FIG. 17, etc. In certain embodiments, the loggedbehavior of users can be used as indicators of an extent to which theusers are good custodians of the data to which they have been entrusted.In various cases, the trust measure can be based on, for example, anumber of DLP violations, directory-services information, communicationprofiles, combinations of same, and/or the like. In various embodiments,trust measures can be stored in a trust repository 2423. In someembodiments, trust measures can be determined entirely in real-time inresponse to requests to access particular content. In these embodiments,the trust repository 2423 may be eliminated. In still other embodiments,trust measures can be stored in the trust repository 2423 for purposesof improving trust determination over time (e.g., using machine learningand/or manual techniques).

In some embodiments, a trust measure can be a quantity of virtualcurrency, referred to herein as trust tokens. In this manner, trusttokens can derive value from limited distribution. In certainembodiments, each user can be given an allocation of trust tokens byapplying one or more rules which define how trust tokens are earned.Advantageously, in certain embodiments, trust tokens can be one way ofsafeguarding against previously trustworthy users who, for example,suddenly become disgruntled employees, from binge-accessing and exposingorganizational content. In these embodiments, even users deemed highlytrustworthy, and who are given relatively large allocations of trusttokens, can be prevented from having unlimited self-service access todata because each access would require “spending” trust tokens. Exampleoperation of the trust determination module 2401 will be described withrespect to FIG. 27.

The need-to-know determination module 2403 can be a hardware and/orsoftware module operable to determine a particular user's need to accessparticular content, for example, by comparing topics contained in theparticular content with topics contained in the particular user'scommunications. In certain embodiments, the need-to-know determinationmodule 2403 can define the user's need to know, or access, theparticular content in terms of the user's measured affiliation with oneor more topics of the particular content. In a typical embodiment, theneed-to-know determination module 2403 can communicate with the SMAsystem 194 to determine the user's subject-matter affiliation with agiven topic. Example operation of the need-to-know determination module2403 will be described with respect to FIG. 28. In various embodiments,resultant data from the need-to-know determination module 2403 can bestored in a need-to-know repository 2425. In some embodiments,need-to-know can be determined entirely in real-time in response torequests to access particular content. In these embodiments, theneed-to-know repository 2425 may be eliminated. In still otherembodiments, need-to-know values can be stored in the need-to-knowrepository 2425 for purposes of improving need-to-know determinationsover time (e.g., using machine learning and/or manual techniques).

The access request module 2405 can be a hardware and/or software moduleoperable to receive and process user requests to access particularcontent of the content 2411 according to applicable self-service accesspolicies of the policies repository 2409. For example, the accessrequest module 2405 can automatically grant or deny access requestsusing, for example, information provided by the trust determinationmodule 2401, the need-to-know determination module 2403, and/or otherresources such as the user-context analytics system 180. In certainembodiments, the access request module 2405 can log each accessautomatically granted or denied in request logs 2421. In addition, incertain embodiments, each revocation or reversal of automaticgrants/denials can be recorded in the request logs 2421.

The administration module 2407 can be a hardware and/or software moduleoperable to interface with the content platforms 2476, for example, toimplement access rights granted, denied, or revoked using theself-service access broker 196. In various cases, the administrationmodule 2407 can map to access-rights functionality of an applicable APIor other interface of the content platforms 2476. For example, when anaccess request for particular content is automatically granted, theadministration module 2407 can call an appropriate API or otherwisecause the access grant to be effected on an appropriate content platformof the content platforms 2476. In an example, the administration module2407 can cause a requesting user to be added to an access control listfor requested content.

In some embodiments, as illustrated, the administration module 2407 canaccess some or all of the content platforms 2476 via the BIM system 130.In these embodiments, the administration module 2407 can use the BIMsystem 130 (e.g., via the access manager 204 of FIG. 2) to access andprovide particular content of the content 2411 to the requesting user.In these implementations, it may not be necessary for the self-serviceaccess broker 196 to make changes to access control lists or otheraccess rights on the content platforms 2476. Rather, the administrationmodule 2407 can use, for example, credentials available to the accessmanager 204 to acquire content where appropriate (e.g., using thecontrolling user's credentials). In these implementations, the requestlogs 2421 can serve as the controlling authority for self-service accessrights. In implementations where the self-service access broker 196directly maintains all or a portion of the content 2411, the requestlogs 2421 can similarly serve as the controlling authority forself-service access rights.

It should be appreciated that the particular arrangement of modules inFIG. 24 is only for illustrative purposes. For example, in variousimplementations, the same or different functionality could be allocatedamong more or fewer modules than what is shown in FIG. 24. In similarfashion, although particular data stores are illustrated in FIG. 24, itshould be appreciated that such data storage can be divided among anynumber of logical or physical data stores. In addition, various datastores can be eliminated. For example, if particular implementationshave no need for the trust determination module 2401 or the need-to-knowdetermination module 2403 to persist data, the trust repository 2423and/or the need-to-know repository 2425 can be eliminated. Othervariations from the foregoing will be apparent to one skilled in the artafter reviewing the present disclosure. For simplicity of descriptionand illustration, various examples will be described below relative tothe example arrangement depicted in FIG. 24.

FIG. 25 illustrates an example format of a self-service access policy2519 that can be used to secure particular content. The self-serviceaccess policy 2519 can include, for example, trust criteria 2513,need-to-know criteria 2515, real-time access criteria 2517, and/or otherconstraints. In certain embodiments, the trust criteria 2513 can includea configurable trust-measure threshold that restricts which users canaccess the particular content. The trust-measure threshold can be aconfigurable value or range of values. For example, in certainembodiments, trust measures can be scaled or normalized values such thatthe trust-measure threshold can be set to low, medium, high, etc. Inaddition, or alternatively, in some embodiments, the trust criteria 2513can include a quantity of trust tokens. The quantity of tokens can, ineffect, be a “cost” of accessing the particular content such that usersaccessing the particular content must “spend” the quantity of trusttokens.

The need-to-know criteria 2515 can restrict access to the particularcontent on the basis of requesting users' subject-matter affiliationwith one or more topics of the particular content. In some cases, theneed-to-know criteria 2515 can include criteria for a single topic(e.g., a user-selected topic that characterizes the particular topic, anautomatically determined topic, etc.). In other cases, the need-to-knowcriteria 2515 can include criteria for a combination of topics suchthat, for example, a requesting user may have to satisfy applicableconditions for each topic, at least one topic, etc.

In an example, with reference to the topical dimension described abovewith respect to the SMA system 194, the need-to-know criteria 2515 caninclude one or more thresholds related to a topical dimension such as acardinality of the user's set of topic-relevant conversations, a numberof standard deviations that separate the cardinality from a mean value(e.g., a mean value based on a set of verified test data, a mean valueacross all users, etc.), a decimal or percentage value of all of theuser's conversations that the topic-relevant conversations represent, anaffiliate index, combinations of same, and/or the like.

In another example, with reference to the timeline dimension describedabove with respect to the SMA system 194, the need-to-know criteria 2515can include one or more thresholds or requirements related to a date ofa requesting user's first topic-relevant conversation, a date of therequesting user's most recent topic-relevant conversation, therequesting user's number of topic-relevant conversations within certainperiods of time (e.g., within the last month, within each month betweenthe first date and the most recent date, etc.), a statisticaldistribution over time of the requesting user's conversations concerningthe topic, etc. In addition, or alternatively, still with reference tothe timeline dimension described above, the need-to-know criteria 2515can require that the requesting user have a particular timelineclassification such as, for example, long-time affiliate, deep-domainaffiliate, cutting-edge affiliate, and strategic affiliate.

In yet another example, with reference to the affiliation-scopedimension described above with respect to the SMA system 194, theneed-to-know criteria 2515 can include one or more thresholds orrequirements related to a number of topic-relevant conversations that arequesting user originated, a number of topic-relevant conversationsauthored by the requesting user (e.g., documents, presentations, etc.),a number of individuals that the requesting user brought intotopic-relevant conversations (e.g., by sending or forwarding), anaverage length of communications originated by the requesting user(e.g., measured in characters, words, sentences, etc.), and/or the like.In addition, or alternatively, still with reference to theaffiliation-scope dimension described above, the need-to-know criteria2515 can require that the requesting user have a particularaffiliation-scope classification such as, for example, evangelist,knowledge manager, knowledge creator, and influencee.

The real-time access criteria 2517 can be used to restrict access to theparticular content on the basis of real-time attributes of a userrequesting accessing to the particular content. For example, thereal-time access criteria 2517 can require or exclude any aspect ofuser-location information, event-timing information and/or user-deviceidentification information as described above. In a particular example,the real-time access criteria 2517 could specify that requestsoriginating from a public location (e.g., coffee shop, mall, or airport)and/or a mobile device be denied. In another example, the real-timeaccess criteria 2517 could require that, if a current user contextexhibits one or more outlier conditions relative to a user'scommunication profile, the request should be denied. Examples of outlierconditions include the user making the request at a time when the useris typically inactive, the request being made from an unrecognizeddevice, the request being made from an unrecognized location,combinations of same and/or the like.

FIG. 26 presents a flowchart of an example of a process 2600 forestablishing self-service access policies. The process 2600 can beimplemented by any system that can access data and communicate over anetwork. For example, the process 2600, in whole or in part, can beimplemented by the SMA system 194 (or a component thereof), the BIMsystem 130 (or a component thereof), the cross-platform DLP system 146(or a component thereof), the user-context analytics system 180 (or acomponent thereof), the controlling-user configuration module 2498, thetrust determination module 2401, the need-to-know determination module2403, the access request module 2405, and/or the administration module2407. In some cases, the process 2600 can be performed generally by theself-service access broker 196 or the central management platform 192.Although any number of systems, in whole or in part, can implement theprocess 2600, to simplify discussion, the process 2600 will be describedin relation to specific systems or subsystems of the self-service accessbroker 196.

At block 2602, the controlling-user configuration module 2498 receives arequest, from a controlling user, to publish particular content of thecontent 2411 for self-service access. In various cases, the particularcontent can be identified by a uniform resource locator (URL), adocument identifier, and/or the like. In various cases, the request canbe received from one of the clients 114, 116, or 118. In some cases, therequest can be received via redirect from an initial request made to aparticular content platform of the content platforms 2476.

At block 2604, the controlling-user configuration module 2498 determinesone or more topics of the particular content. In some embodiments, thecontrolling user can be permitted to select the topics from a global setof topics or a taxonomy that is collected, for example, by the datacollection system 2132 of the SMA system 194. In other embodiments, thetopics can be automatically determined, for example, by ingesting wordsand phrases of the particular content as described above with respect tothe SMA system 194. In some embodiments, the particular content mayalready have a pre-processed set of topics based on previous operationof the SMA system 194 (e.g., stored in the set of databases 2133). Inthese embodiments, the at least one topic can simply be retrieved.

At block 2606, the controlling-user configuration module 2498 allows thecontrolling user to specify content-access criteria. In general, theblock 2606 can include allowing the controlling user to specify any ofthe criteria described above with respect to the self-service accesspolicy 2519 of FIG. 25. At block 2608, the controlling-userconfiguration module 2498 generates a self-service access policy for theparticular content using the content-access criteria specified at theblock 2606. In general, the block 2608 can include producing theself-service access policy according to a standardized format used bythe self-service access broker 196.

At block 2610, the controlling-user configuration module 2498 stores theself-service access policy in the policies repository 2409. At block2612, the controlling-user configuration module 2498 activates theself-service access policy, for example, by making the particularcontent available to requesting users as specified by the self-serviceaccess policy. At block 2614, the access request module 2405automatically processes requests to access the particular contentaccording to the self-service access policy. The block 2614 can include,for example, automatically granting or denying access requests. Examplefunctionality that can occur at the block 2614 will be described withrespect to FIG. 29.

FIG. 27 presents a flowchart of an example of a process 2700 fordetermining trust values usable for self-service access. In someembodiments, the process 2700 can be executed periodically (e.g., daily,weekly, monthly) for each user in a set of users of all users in anorganization. In addition, in some embodiments, the process 2700 can betriggered for a particular user by the access request module 2405.

The process 2700 can be implemented by any system that can access dataand communicate over a network. For example, the process 2700, in wholeor in part, can be implemented by the SMA system 194 (or a componentthereof), the BIM system 130 (or a component thereof), thecross-platform DLP system 146 (or a component thereof), the user-contextanalytics system 180 (or a component thereof), the controlling-userconfiguration module 2498, the trust determination module 2401, theneed-to-know determination module 2403, the access request module 2405,and/or the administration module 2407. In some cases, the process 2700can be performed generally by the self-service access broker 196 or thecentral management platform 192. Although any number of systems, inwhole or in part, can implement the process 2700, to simplifydiscussion, the process 2700 will be described in relation to specificsystems or subsystems of the self-service access broker 196.

At block 2702, the trust determination module 2401 receives a request todetermine a trust measure for a user. In various cases, the request canbe received from the access request module 2405, an administrator orother user, another computer system, etc. At block 2704, the trustdetermination module 2401 enumerates historical DLP policy violations bythe user, for example, via communication with the cross-platform DLPsystem 146 and/or the user-context analytics system. In variousimplementations, quasi-violations as described above can also beenumerated. In some cases, only violations (and/or quasi-violations) ofa particular set of DLP policies or cross-platform DLP policies can beenumerated.

At block 2706, the trust determination module 2401 determines acommunication profile of the user. In some embodiments, thecommunication profile can be a pre-processed communication profile thatis retrieved from the user-context analytics system 180. In otherembodiments, the trust determination module 2401 can cause, for example,the user-context correlation engine 1782 to generate and provide thecommunication profile in the fashion described with respect to FIG. 18.

At block 2708, the trust determination module 2401 determinesdirectory-services information of the user. In various cases, thedirectory-services information can be retrieved directly from adirectory service, from the BIM system 130, and/or the like. Thedirectory-services information can indicate, for example, a geographiclocation, a title or rank in an organizational hierarchy, a role, etc.

At block 2710, the trust determination module 2401 quantitativelyevaluates available information about the user to yield, for example,the trust measure. In some implementations, the trust measure can be acomputation resulting from a rule-based evaluation of the informationfrom blocks 2704-2708 and/or other information. In an example, the block2710 could include computing, for a given time period, a weighted (orunweighted) sum of a number of DLP violations, a number of emailattachments transmitted from a public location (e.g., from thecommunication profile), a number of external communication participantsin the users' communications, a number of communications sent to morethan one user, length of employment with a given organization,combinations of same and/or the like.

In some cases, the trust measure can be a quantity of trust tokens.Trust tokens can be allocated to the user as a result of the usermeeting criteria for earning tokens. In a simple example, if there areseven levels in an organizational hierarchy, the user could be allocatedseven tokens if at the highest level, one token if at the lowest level,etc. In another example, the user could be allocated ten tokens if,based on the enumerated DLP violations, there are fewer than five DLPviolations. In yet another example, the user could be allocated tentrust tokens if, based on the communication profile, there are nocommunications with email attachments sent from a public location. Instill another example, the user could be allocated a number of trusttokens equal to the percentage of user-initiated communication eventsthat are initiated from a non-public location on a non-mobile device. Inanother example, a rule could specify a reduction of trust tokens. Forexample, the user could be deducted one trust token for each automaticaccess grant that has been revoked over the past month. It should beappreciated that the foregoing are merely illustrative examples.Quantities of trust tokens can also be determined in numerous othermanners that will be apparent to one skilled in the art after reviewingthe present disclosure.

At block 2712, the trust determination module 2401 stores resultantdata, such as the trust measure, in the trust repository 2423. Asmentioned above, in some embodiments, the trust repository 2423 can beeliminated (e.g., if there is no need to persist the trust measuresbecause the trust measures are always determined in real-time). In theseembodiments, storage of the resultant data can be eliminated. Inaddition, or alternatively, the trust determination module 2401 canprovide the resultant data to the requestor.

FIG. 28 presents a flowchart of an example of a process 2800 fordetermining need-to-know values usable for self-service access. In someembodiments, the process 2800 can be executed periodically (e.g., daily,weekly, monthly) for each user in a set of users of all users in anorganization, for each topic in global set of topics or taxonomy. Inaddition, in some embodiments, the process 2800 can be triggered for aparticular user by the access request module 2405.

The process 2800 can be implemented by any system that can access dataand communicate over a network. For example, the process 2800, in wholeor in part, can be implemented by the SMA system 194 (or a componentthereof), the BIM system 130 (or a component thereof), thecross-platform DLP system 146 (or a component thereof), the user-contextanalytics system 180 (or a component thereof), the controlling-userconfiguration module 2498, the trust determination module 2401, theneed-to-know determination module 2403, the access request module 2405,and/or the administration module 2407. In some cases, the process 2800can be performed generally by the self-service access broker 196 or thecentral management platform 192. Although any number of systems, inwhole or in part, can implement the process 2800, to simplifydiscussion, the process 2800 will be described in relation to specificsystems or subsystems of the self-service access broker 196.

At block 2802, the need-to-know determination module 2403 receives arequest to determine one or more need-to-know values for a user inrelation to particular content. In various cases, the request can bereceived from the access request module 2405, an administrator or otheruser, another computer system, etc.

At block 2804, the need-to-know determination module 2403 determines oneor more topics of the particular content. In some embodiments, the oneor more topics may have been specified and determined, for example, at atime of establishing an applicable self-service access policy. In theseembodiments, the topics can be retrieved, for example, from the policiesrepository 2409. In other embodiments, the need-to-know determinationmodule 2403 can cause the topics to be determined in any of the waysdescribed above with respect to the block 2604 of FIG. 26.

At block 2806, the need-to-know determination module 2403 determines SMAdata about the user in relation to each of the topics. In certainembodiments, the block 2806 can include causing the SMA system 194 togenerate multidimensional SMA data as described with respect to theprocess 2300 of FIG. 23. In certain other embodiments, the block 2806can include accessing pre-processed SMA data for the user, for example,from the SMA system 194 (e.g., as a result of a previous execution ofthe process 2300 for all users, a set of users, etc.).

At block 2808, the need-to-know determination module 2403 generatesneed-to-know values in relation to the user for each of the topics. Ingeneral, the need-to-know values can include any values specified by anapplicable self-service access policy as described, for example, withrespect to the self-service access policy 2519 of FIG. 25. In a typicalembodiment, the generated need-to-know values can correspond to portionsof the SMA data determined at the block 2806. At block 2810, theneed-to-know determination module 2403 stores resultant data, such asthe need-to-know values, in the need-to-know repository 2425. Asmentioned above, in some embodiments, the need-to-know repository 2425can be eliminated (e.g., if there is no need to persist the need-to-knowvalues because the need-to-know values are always determined inreal-time). In these embodiments, storage of the resultant data can beeliminated. In addition, or alternatively, the need-to-knowdetermination module 2403 can provide the resultant data to therequestor.

FIG. 29 presents a flowchart of an example of a process 2900 forprocessing self-service access requests. The process 2900 can beimplemented by any system that can access data and communicate over anetwork. For example, the process 2900, in whole or in part, can beimplemented by the SMA system 194 (or a component thereof), the BIMsystem 130 (or a component thereof), the cross-platform DLP system 146(or a component thereof), the user-context analytics system 180 (or acomponent thereof), the controlling-user configuration module 2498, thetrust determination module 2401, the need-to-know determination module2403, the access request module 2405, and/or the administration module2407. In some cases, the process 2900 can be performed generally by theself-service access broker 196 or the central management platform 192.Although any number of systems, in whole or in part, can implement theprocess 2900, to simplify discussion, the process 2900 will be describedin relation to specific systems or subsystems of the self-service accessbroker 196.

At block 2902, the access request module 2405 receives a request from auser to access particular content of the content 2411. At block 2904,the access request module 2405 retrieves, from the policies repository2409, a self-service access policy applicable to the particular content.

At block 2906, the access request module 2405 determines valuescorresponding to content-access criteria of the self-service accesspolicy. In an example, if the content-access criteria includes trustcriteria, the access request module 2405 can cause a trust measure to begenerated by the trust determination module 2401 as described withrespect to the process 2700 of FIG. 27. In another example, if thecontent-access criteria includes need-to-know criteria, the accessrequest module 2405 can cause applicable need-to-know values to begenerated by the need-to-know determination module 2403 as describedwith respect to the process 2800 of FIG. 28. In yet another example, ifthe content-access criteria includes real-time access criteria, theaccess request module 2405 can retrieve a current user context (andrelated values), for example, from the user-context analytics system180. In some cases, the access request module 2405 can retrievepre-processed values, for example, as a result of previous operation ofthe trust determination module 2401, the need-to-know determinationmodule 2403, the user-context analytics system 180, etc.

At decision block 2908, the access request module 2405 determineswhether the content-access criteria of the self-service access policy issatisfied. As noted above, the content-access criteria can include trustcriteria, need-to-know criteria, real-time access criteria, and/or othercriteria. If it is determined at the decision block 2908 that thecontent-access criteria is satisfied, at block 2910, the access requestmodule 2405 automatically grants the user access to the particularcontent. In certain embodiments, the granted access can be enacted bythe administration module 2407 as previously described. At block 2912,the access request module 2405 reports the access grant to one or moredesignated users such as, for example, a controlling user of theparticular content, a manager of the user, and/or other users. At block2914, in embodiments utilizing trust tokens, the access request module2405 can decrement the user's trust measure by an applicable quantity oftrust tokens (e.g., as specified in a trust-measure threshold). Afterblock 2914, the process 2900 ends.

If it is determined at the decision block 2908 that the content-accesscriteria is not satisfied, at block 2916, the access request module 2405automatically denies the user access to the particular content. At block2918, the access request module 2405 reports the access denial to one ormore designated users such as, for example, a controlling user of theparticular content, a manager of the user, and/or other users. Afterblock 2918, the process 2900 ends.

In certain embodiments, as described above, the controlling user of theparticular content can override, or reverse, the automatic grants ordenials of the access request module 2405. For example, after receivingthe report of the automatic grant at the block 2910, the controllinguser, via the controlling-user configuration module 2498, can revoke theautomatic grant. In similar fashion, after receiving the report of theautomatic denial at the block 2916, the controlling user, via thecontrolling-user configuration module 2498, can grant the user access.

Depending on the embodiment, certain acts, events, or functions of anyof the algorithms described herein can be performed in a differentsequence, can be added, merged, or left out altogether (e.g., not alldescribed acts or events are necessary for the practice of thealgorithms). Moreover, in certain embodiments, acts or events can beperformed concurrently, e.g., through multi-threaded processing,interrupt processing, or multiple processors or processor cores or onother parallel architectures, rather than sequentially. Although certaincomputer-implemented tasks are described as being performed by aparticular entity, other embodiments are possible in which these tasksare performed by a different entity.

Conditional language used herein, such as, among others, “can,” “might,”“may,” “e.g.,” and the like, unless specifically stated otherwise, orotherwise understood within the context as used, is generally intendedto convey that certain embodiments include, while other embodiments donot include, certain features, elements and/or states. Thus, suchconditional language is not generally intended to imply that features,elements and/or states are in any way required for one or moreembodiments or that one or more embodiments necessarily include logicfor deciding, with or without author input or prompting, whether thesefeatures, elements and/or states are included or are to be performed inany particular embodiment.

While the above detailed description has shown, described, and pointedout novel features as applied to various embodiments, it will beunderstood that various omissions, substitutions, and changes in theform and details of the devices or algorithms illustrated can be madewithout departing from the spirit of the disclosure. As will berecognized, the processes described herein can be embodied within a formthat does not provide all of the features and benefits set forth herein,as some features can be used or practiced separately from others. Thescope of protection is defined by the appended claims rather than by theforegoing description. All changes which come within the meaning andrange of equivalency of the claims are to be embraced within theirscope.

What is claimed is:
 1. A method comprising, by a computer system:receiving a request from a user to access particular content; inresponse to the request: determining a trust measure of the user,wherein the trust measure is based, at least in part, on an analysis oflogged user-initiated communication events of the user on a plurality ofcommunications platforms, wherein the trust measure is variable overtime in relation to the logged user-initiated communication events;wherein the determining the trust measure comprises: enumeratinghistorical data loss prevention (DLP) policy violations by the user onthe plurality of communications platforms; determining a communicationprofile of the user based, at least in part, on the loggeduser-initiated communication events; determining directory-servicesinformation for the user from a directory service; and quantitativelyevaluating a combination of the DLP policy violations, the communicationprofile, and the directory-services information via one or more rules,wherein the trust measure comprises a numerical result of thequantitatively evaluating; accessing a self-service access policyapplicable to the particular content; ascertaining, from theself-service access policy, a trust threshold applicable to theparticular content; and responsive to a determination that the trustmeasure fails to satisfy the trust threshold, automatically denyingaccess by the user to the particular content.
 2. The method of claim 1,wherein the enumerating comprises enumerating quasi-violations by theuser on the plurality of communications platforms.
 3. The method ofclaim 1, wherein the determining the communication profile of the usercomprises: accessing event-assessment data for the logged user-initiatedcommunication events, wherein each user-initiated communication eventrelates to at least one communication of a plurality of communications,wherein the event-assessment data comprises information related to acontent-based classification of each of the plurality of communications;determining event-context information for each of the loggeduser-initiated communication events, the event-context informationcomprising user-identification information, user-location information,event-timing information, and user-device identification information;correlating the event-assessment data to a plurality of user contexts,each user context defined by a distinct subset of the event-contextinformation; associating at least one user-communication pattern witheach user context based, at least in part, on the correlatedevent-assessment data; and generating the communication profile using aresult of the associating.
 4. The method of claim 1, wherein thedetermining the communication profile comprises accessing apre-processed communication profile of the user.
 5. The method of claim1, wherein the quantitatively evaluating comprises: determining trustvalues for the historical DLP violations, the communication profile, andthe directory-services information; and wherein the trust measure isbased on a combination of the trust values.
 6. The method of claim 1,wherein the determining the trust measure comprises accessing apre-processed trust measure in memory.
 7. The method of claim 1,comprising, responsive to a determination that the trust measuresatisfies the trust threshold, automatically granting access by the userto the particular content.
 8. The method of claim 7, wherein theautomatically granting comprises causing the user to be added to anaccess control list for the particular content.
 9. The method of claim1, wherein the trust measure comprises an allocation of virtualcurrency.
 10. The method of claim 9, comprising: responsive to adetermination that the trust measure satisfies the trust threshold,automatically granting access by the user to the particular content; anddecrementing the trust measure by a configurable amount.
 11. The methodof claim 1, comprising: determining information related to a currentuser context of the user; and responsive to a determination that thecurrent user context comprises an outlier condition, denying access bythe user to the particular content regardless of the trust measure. 12.An information handling system comprising at least one processor coupledto a memory, wherein the at least one processor is operable to implementa method comprising: receiving a request from a user to accessparticular content; in response to the request: determining a trustmeasure of the user, wherein the trust measure is based, at least inpart, on an analysis of logged user-initiated communication events ofthe user on a plurality of communications platforms, wherein the trustmeasure is variable over time in relation to the logged user-initiatedcommunication events; wherein the determining the trust measurecomprises: enumerating historical data loss prevention (DLP) policyviolations by the user on the plurality of communications platforms;determining a communication profile of the user based, at least in part,on the logged user-initiated communication events; determiningdirectory-services information for the user from a directory service;and quantitatively evaluating a combination of the DLP policyviolations, the communication profile, and the directory-servicesinformation via one or more rules, wherein the trust measure comprises anumerical result of the quantitatively evaluating; accessing aself-service access policy applicable to the particular content;ascertaining, from the self-service access policy, a trust thresholdapplicable to the particular content; and responsive to a determinationthat the trust measure fails to satisfy the trust threshold,automatically denying access by the user to the particular content. 13.The information handling system of claim 12, wherein the enumeratingcomprises enumerating quasi-violations by the user on the plurality ofcommunications platforms.
 14. The information handling system of claim12, wherein the determining the communication profile of the usercomprises: accessing event-assessment data for the logged user-initiatedcommunication events, wherein each user-initiated communication eventrelates to at least one communication of a plurality of communications,wherein the event-assessment data comprises information related to acontent-based classification of each of the plurality of communications;determining event-context information for each of the loggeduser-initiated communication events, the event-context informationcomprising user-identification information, user-location information,event-timing information, and user-device identification information;correlating the event-assessment data to a plurality of user contexts,each user context defined by a distinct subset of the event-contextinformation; associating at least one user-communication pattern witheach user context based, at least in part, on the correlatedevent-assessment data; and generating the communication profile using aresult of the associating.
 15. The information handling system of claim12, wherein the determining the communication profile comprisesaccessing a pre-processed communication profile of the user.
 16. Theinformation handling system of claim 12, wherein the quantitativelyevaluating comprises: determining trust values for the historical DLPviolations, the communication profile, and the directory-servicesinformation; and wherein the trust measure is based on a combination ofthe trust values.
 17. The information handling system of claim 12,wherein the determining the trust measure comprises accessing apre-processed trust measure in memory.
 18. A computer-program productcomprising a non-transitory computer-usable medium havingcomputer-readable program code embodied therein, the computer-readableprogram code adapted to be executed to implement a method comprising:receiving a request from a user to access particular content; inresponse to the request: determining a trust measure of the user,wherein the trust measure is based, at least in part, on an analysis oflogged user-initiated communication events of the user on a plurality ofcommunications platforms, wherein the trust measure is variable overtime in relation to the logged user-initiated communication events;wherein the determining the trust measure comprises: enumeratinghistorical data loss prevention (DLP) policy violations by the user onthe plurality of communications platforms; determining a communicationprofile of the user based, at least in part, on the loggeduser-initiated communication events; determining directory-servicesinformation for the user from a directory service; and quantitativelyevaluating a combination of the DLP policy violations, the communicationprofile, and the directory-services information via one or more rules,wherein the trust measure comprises a numerical result of thequantitatively evaluating; accessing a self-service access policyapplicable to the particular content; ascertaining, from theself-service access policy, a trust threshold applicable to theparticular content; and responsive to a determination that the trustmeasure fails to satisfy the trust threshold, automatically denyingaccess by the user to the particular content.